天天看點

Android ViewPager實作上一頁下一頁左右滑動的正确方法

回顧一下這個功能的應用場景:有一個裝有很多條資料的一個list,這個list在listview中顯示出來了,現在滑動listview随便到一個位置,點選一個item進入資料的詳情頁,在這個詳情頁,我們用到了viewpager,讓它實作左右滑動的效果。

以前我也是在網上找的demo,大家通常的做法是,一進入詳情頁,就把每個頁面的view初始化出來,然後把這些view放在list裡面,傳給自己定義的viewpageradapter,這樣就出現滑動效果了。但是這樣就會出現一個問題,就是我的list太大,初始化出來的view頁面就會很多,比如說1000條資料,不可能全初始化出view來放list裡再傳給adapter吧,這樣八成oom的,于是我就照着這個思路,先初始化一部分view,再不斷的滑動過程中,再初始化一部分,但是如果你是從資料清單的中間進入,向前滑動時不斷的初始化view添加進list,這樣viewpageradapter的大小就會發生變化,你的currentindex就在不斷的變化。超級不好控制。

再回想一下我們平時做一些常見的adapter的做法,沒有在activity中把所有的item初始化出來,再傳給adapter,讓adapter做顯示吧,常用的做法是,在adapter裡再進行資料的封裝什麼的,在adapter中的getview()中進行操作,無論是自定義界面,還是填充資料。其實,viewpager的pageradapter也是同樣的思路。回想一下,其實就是基本的adapter的操作了,以前剛學習這個控件的時候被網上别人的demo誤導了。

看完上面這段代碼是不是很簡單,還要注意一點就是,你在外面的listview從哪兒跳進viewpager的時候,要在viewpager設定完adapter的時候setcurretntindex一下,就像下面這樣:

1

<code>viewpager.setcurrentitem(intoposition)</code>

繼續閱讀