我使用这种方法来获取ViewPager的当前View:
private class OuterAdapter extends PagerAdapter{
private SwipingVideoPage currentPage;
@Override
public Object instantiateItem(ViewGroup container, int position) {
SwipingVideoPage page = new SwipingVideoPage();
container.addView(page);
return page;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
currentPage = (SwipingVideoPage)object;
super.setPrimaryItem(container, position, object);
}
public SwipingVideoPage getCurrenPage() {
return currentPage;
}
}
我想我可以打电话ViewPager.getAdapter.getCurrentPage()
得到当前的看法。但我发现它不适用于ViewPager.OnPageChangeListener.onPageSelected()
:
private class OuterChangeListener implements ViewPager.OnPageChangeListener {
@Override
public void onPageSelected(int position) {
((OuterAdapter)outerViewPager.getAdapter()).getCurrenPage() //this returns the previous shown view, not the right one
}
}
也许onPageSelected()
以前叫setPrimaryItem()
,这是正确的吗?
以及如何获得ViewPage
主要观点onPageSelected()
?
就像@Mohammad Fareed所说的那样,我没有找到直接在中获取当前页面的方法ViewPager
。
所以我用这种方式来解决问题:
private Map<Integer, View> pageMap; //records all the pages in the ViewPager
private SwipingVideoPage currentPage;
private class OuterAdapter extends PagerAdapter{
@Override
public Object instantiateItem(ViewGroup container, int position) {
SwipingVideoPage page = new SwipingVideoPage();
container.addView(page);
pageMap.put(position, page); //add page
return page;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
pageMap.remove(position); //remove page which is removed from ViewPager
}
}
private class OuterChangeListener extends ViewPager.SimpleOnPageChangeListener {
@Override
public void onPageSelected(int position) {
currentPage = pageMap.get(position); //get current page
}
}
我在我的项目中使用了这些代码,并且到目前为止效果很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句