因此我的活动正确使用了PageAdapter和ViewPager,其中3张图片可以从左向右滚动。那么我在活动上有左右箭头,我为这两个图像设置了一个onClickListener,用ViewPager寻呼机左右滚动。方法就像
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是如何检查索引是否超出界限以及我是否应该这样做?
答案 0 :(得分:3)
是的,确实如此。请参阅source并查看setCurrentItemInternal
方法(由setCurrentItem()
调用)。
有一些检查可以避免崩溃,其中一个就是这样,这可以避免OOBExceptions:
if (item < 0) {
item = 0;
} else if (item >= mAdapter.getCount()) {
item = mAdapter.getCount() - 1;
}
你应该检查自己吗?由你决定。我不会因为这些检查是微不足道的,所以我不希望检查消失。