的預加載的行我在我的申請一個Android ListView和我在每行中顯示不同圖像(每行1個圖像,未定義的高度)的圖像使用的AsyncTask從web載,否則它將它從緩存中拉出來,這樣就很好。的Android ListView的數據
過程是,我有一個網址的形象,在我的適配器的每個getView(除非在高速緩存中找到),我火了一個異步任務來設置我的ImageView與圖像。我給它一個定義的寬度,以適應屏幕(然後我使用這個定義的寬度來縮放高度,所以我知道寬度但是不知道在下載和設置它之前的高度(或圖像的高寬比))
向下滾動時,一切正常,因爲列表視圖預加載像5行..它觸發5個電話下載我的代碼中的圖像。這使得滾動平滑。 問題是當我滾動。當我向上滾動時,視圖被重用,我知道寬度可以,但最初的高度爲0,直到我完全加載圖像;當它完全加載後,圖像視圖會擴展到任何高度(即1024),並且會使滾動不連貫,因爲它將視圖從0擴展到1024,並使焦點回到該視圖的頂部...
問題:是否可以設置列表視圖預加載向下滾動和達到一定的大小..?所以當向上滾動時,我的ListView有5行準備顯示。我知道這是可能的android.support.v4.view.ViewPager(默認情況下它的預加載+1和-1..but可以改爲+5和-5)
你用什麼作爲適配器?在它內部,你使用bindView嗎? – 2014-12-08 00:42:49
我使用的BaseAdapter ..只是使用getView,膨脹我的佈局之一,設置視圖任何我想要的並返回它。 – vankizer 2014-12-08 00:44:40
我有一種解決方案..當我下載一個新的圖像,我記錄的高度,並把它放在HashMap,所以後來,檢查是否它的緩存圖像,如果是,我知道它的高度,所以設置圖像視圖對象寬度和高度,它不會跳躍..但這可能是在他們的生命週期中重新創建碎片/活動很麻煩...不知道如何通過周圍。 – vankizer 2014-12-08 00:47:32