當一個列表項目很多,并且每個項目可以進入到其它Activity或者Fragment時,保存之前列表的位置是一個比較不錯的功能,
今天研究了一下怎么保存瀏覽位置,發(fā)現(xiàn)GridView和它的父類中有4個相關的方法:
public void smoothScrollToPosition (int position)
滾動到position指定的位置,api level 11之下可用
*當你滾動完后,返回列表,能正常滾動,但是你再次從列表的項目返回后,滾動失效,就是只能滾動一次,我認為這是一個Bug。然后我在Miui2.3的ROM上測試,不能正常滾動。
public void smoothScrollToPosition (int position, int boundPosition)
滾動到position指定的位置,然后判斷position+boundPosition是否會超出Adapter中的總項目數(shù),如果超出,則退回到
總數(shù)-boundPosition的位置顯示。
*存在的問題跟上面的那個方法一樣
public void smoothScrollToPositionFromTop (int position, int offset, int duration)
滾動到position項目的位置,并且position項目距離GirdView上邊的距離為offset個像素,duration指定滾動需要的時間(毫秒)
*不存在只能滾動一次的問題,但是最低的api level需要11。
public void smoothScrollToPositionFromTop (int position, int offset)
效果跟第三個方法一樣,但是采用api默認的時間,最低api level 11。
另:
ViewPager可以通過setCurrentItem(int position)設置當前顯示哪一個Fragment。