2010-12-18 42 views
3

我試圖創建一個動態滾動視圖。它將保留從服務器下載的元素列表。這個清單可能有成千上萬的元素。由於這些元素必須在向下滾動時下載到列表中,並且也應該從列表頂部刪除以保持內存使用率較低。我還需要能夠將不同的視圖設置爲元素。動態加載元素到ScrollView

最好是使用ScrollView還是ListView?我該如何去添加元素到列表中,並控制何時下載更多元素?

我記得有關如何做到這一點的示例或教程的絆腳石。尤其關於如何在向下滾動時添加元素,刪除頂部的元素,並創建不同的xml視圖以用作元素。我現在找不到這個示例教程。這是關於如何重用元素,因爲他們出去,如果範圍滾動,我認爲。

回答

2

這是一個相當多部分的問題,但我可能能夠幫助其中的一部分。您可以使用ScrollView,我更喜歡這樣做,因爲它允許您根據需要定義許多UI元素。


添加/刪除元素

首先我想創建爲每個列表元素的XML佈局。當你需要添加的元素,你可以擡高這個佈局像這樣:

LinearLayout clone = (LinearLayout)View.inflate(this, R.layout.sample, null)

然後你就可以在XML訪問控件設置元素的信息,你誇大

clone.findViewById(R.id.NameSpace).setText("This is element Johnny")

我會將克隆的ID設置爲隨機生成的數字或某種增量索引並以某種方式存儲該數字(即Listint[]),將「舊」元素的ID保留在存儲設備的前端。然後,當您需要訪問元素以將其刪除時,您可以僅爲第一個元素調用ScrollView.removeView(findViewById(Storage.get(0)))

+0

的ListView已經管理到展示一個更大的數據集有限的窗口。你不需要或想要重新發明這個輪子。 :) – adamp 2010-12-19 02:29:18

+0

是的,但正如我在我的答案中所述,膨脹模板允許自定義視圖,包括按鈕,圖像等。以及獨特的處理。它會更具視覺吸引力。 – Snailer 2010-12-19 04:56:38

+0

這正是ListView所做的。您可以實現一個適配器,該適配器爲數據集中的每個位置返回自定義視圖(通常是從模板誇大的),並且您可以重新使用舊項目滾動出視圖時已經爲不同位置膨脹的項目視圖。 – adamp 2010-12-19 17:42:03