2013-04-10 104 views
4

我有一個ListView,其中每個項目的視圖是一個字符串(項目的名稱)。但是我必須將許多其他數據與該項目相關聯:價格,大小,重量,稅收等。所以,我要創建一個名爲Item的新Java類,然後爲列表中的每個項目創建一個對象。列表視圖中的複雜項目

我不知道哪種方法可以實現這一點。有兩個明顯的選擇:

1)我可以簡單地在任何Android視圖之外創建數據結構,然後編寫一個名爲UpdateList()的方法,該方法採用此數據結構中每個項目的名稱並將其放入ListView 。這樣做的問題是一些數據會被複制兩次(原始數據結構和ListView的適配器),當您複製數據時,會出現潛在的問題。

2)或者,我可以以某種方式直接將數據結構與ListView的適配器相關聯,並讓它找出如何顯示每個顯示的ListView條目的名稱。這裏的優點是你只有一個數據結構。但是我不知道這在Android中是否可行,或者非常複雜。

哪種方法可以在Android應用中執行此操作?

回答

1

只需使用適配器。它更乾淨。然後,您可以檢索使用getView()顯示列表項時所需的信息。請參閱this example

+0

我不能讓你的榜樣工作。我完全複製它,並收到14個編譯器錯誤。第一個是:AlertsAdapter.java:9:包josecgomez.com.android.dev.webservice.objects不存在 [javac] import josecgomez.com.android.dev.webservice.objects.alerts; – 2013-04-10 23:49:23

9

如果您使用ListView和Adapter選項,那麼您需要創建一個自定義的ArrayAdapter,以便按照您的需要從此對象中填充ListView

此技術的優點是您獲得了一個Views回收機制,可以在您內部回收Views以便花費更少的內存。

在短期你必須:

1.創建一個代表你的數據的單個行的對象。

2.創建這些對象的ArrayList

3.創建一個包含ListView的佈局,或者使用代碼向您的主佈局中添加一個ListView。

4.創建單行佈局。

5.創建一個ViewHolder,從Views的立場來看,它將代表您的數據行的視覺方面。

6.創建一個自定義ArrayAdapter,將根據您的需要填充行。

7.onCreate最後指定這個ArrayAdapterListView

您可以通過閱讀這篇博客我寫得到如何實現這一點的想法:

Create a Custom ArrayAdapter

+0

+1提供的步驟。自定義適配器是做到這一點的方法。 – Raghunandan 2013-04-10 18:13:19

+0

謝謝。我會盡力實現這一點。 – 2013-04-10 18:48:41