所以我的活动正确地使用了pageadapter和viewpager,其中3个图像可以从左向右滚动。因此,我在活动上有左箭头和右箭头,并为两个图像设置了一个onclicklistener,以便使用viewpager pager向左和向右滚动。方法是
private void setOnClickArrows(final ViewPager pager){
ImageView rightArrow = (ImageView) view.findViewById(R.id.right);
ImageView leftArrow = (ImageView) view.findViewById(R.id.left);
rightArrow.setOnClickListener(new OnClickListener ()
@Override
public void onClick(View v) {
pager.setCurrentItem(pager.getCurrentItem() + 1);
}
});
leftArrow.setOnClickListener(new OnClickListener ()
@Override
public void onClick(View v) {
pager.setCurrentItem(pager.getCurrentItem() - 1);
}
});
}
这很管用。但是,我想知道viewpager如何检查索引是否超出范围,以及我是否应该这样做?
最佳答案
是的,事实上是这样。参考source并查看setCurrentItemInternal
方法(由setCurrentItem()
调用)。
有几个检查可以避免崩溃,其中一个检查可以避免oobexceptions:
if (item < 0) {
item = 0;
} else if (item >= mAdapter.getCount()) {
item = mAdapter.getCount() - 1;
}
你应该检查一下自己吗?由你决定。我不会,因为那些支票是微不足道的,所以我不会期望支票消失。