所以我的活动正确地使用了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;
}

你应该检查一下自己吗?由你决定。我不会,因为那些支票是微不足道的,所以我不会期望支票消失。

10-05 21:20