2014-01-14 29 views
2

所以我的活動正確使用PageAdapter和ViewPager,其中3張圖像可以從左到右滾動。然後我在活動上有左右箭頭,並且我爲這兩個圖像設置了一個onClickListener,以便使用ViewPager尋呼機向左和向右滾動。該方法就像當使用setCurrentItem(int index)時,android PageAdapter和ViewPager檢查indexoutofbounds異常嗎?

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如何檢查索引是否超出範圍,並且我應該這樣做?

回答

3

是的,它實際上是。請參閱source並查看setCurrentItemInternal方法(由setCurrentItem()調用)。

有到位,以避免崩潰幾張支票,而其中的一個是這樣的,這避免了OOBExceptions:

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

你應該檢查自己嗎?由你決定。我不會因爲這些檢查是微不足道的,所以我不希望檢查消失。

+0

謝謝!我檢查了文檔,但是在serCurrentItem()上它看起來沒有鏈接得更遠。謝謝! –

+0

@BoomerTruong不客氣。由於我的答案解決了您的問題,因此您應該通過[點擊掏空的選中標記以使其變爲綠色]接受它。](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work ) –