使用setCurrentItem(int index)时,android PageAdapter和ViewPager是否检查indexoutofbounds异常?

时间:2014-01-14 03:23:31

标签: android android-fragments android-viewpager

因此我的活动正确使用了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是如何检查索引是否超出界限以及我是否应该这样做?

1 个答案:

答案 0 :(得分:3)

是的,确实如此。请参阅source并查看setCurrentItemInternal方法(由setCurrentItem()调用)。

有一些检查可以避免崩溃,其中一个就是这样,这可以避免OOBExceptions:

if (item < 0) {
   item = 0;
} else if (item >= mAdapter.getCount()) {
   item = mAdapter.getCount() - 1;
}

你应该检查自己吗?由你决定。我不会因为这些检查是微不足道的,所以我不希望检查消失。