2012-01-24 102 views
1

我見過一些使用OnScrollListener的ListView動態增長實現。在不使用OnScrollListener的情況下加載新的ListView項目

我想知道,有沒有更優雅的解決方案?如果適配器說有更多可用項目,ListView本身不會向適配器請求更多數據?

畢竟,ListView在滾動時根據需求創建視圖,所以爲什麼我應該創建自己的滾動監聽器?理論上,我應該能夠響應在滾動ListView時發給底層適配器的ListView請求。 當ListView告訴它的Adapter它需要更多的數據用於下一個視圖,並且當加載完成時,我可以向服務器發出新的數據請求(批量),我可以通知ListView新數據可用。

有沒有人試過這種方法?有沒有可用的源代碼?

我需要實現某種無盡的列表,但實際上它只有有限的JSON記錄數(約500),並且每條記錄都有一個唯一的Id,所以我可以將它們緩存在一個簡單的Map中。我只是想用最優雅和直接的方法(最好與Android 1.6兼容)來實現它,以避免各種拙劣的解決方案。

回答

4

畢竟,ListView在滾動時根據需求創建其視圖, 爲什麼我應該創建自己的滾動監聽器?

沒有listview不會創建視圖。它是創建視圖的適配器。

通過跟蹤Listview請求哪個視圖位置,您可以嘗試在getview函數中請求更多數據。但優雅的解決方案將保持與onscrolllistener。

+1

謝謝你的提示,我發現了一個類似的實現在這裏:http://codinglines.frankiv.me/post/14552677846/android實現動態加載適配器我試過了,它對我的​​需求很好。 – JustAMartin

1

正如manjusg說,你可以在你的getView方法用這一招:

... 
if (position > lastViewed && position == getCount()-1) { 
    lastViewed = position; 
    runYourTask(); 
} 
... 
相關問題