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