1

我想創建一個自定義Adapter,它可以處理任何種類的佈局被充氣。泛型指的是在適配器中設置的任何類型的數據,並且可以爲事件監聽器使用任何種類的佈局來爲項目設置。通用ListView適配器

例如:

我有一個聯繫人列表和國家列表。聯繫人列表在其佈局中有四個項目,即人員圖像,姓名,號碼和複選框。 Country List包含一個CountryName(TextView)和一個複選框。

是否有可能使用同一個適配器,並且該適配器處理所有類型的項目?

我希望在點擊任何項目後重置打勾圖像。

+0

來通知適配器有關數據更改的信息。[查看本文](http://samir-mangroliya.blogspot.in/p/android-image-listview.html) – 2012-07-16 17:45:26

+0

感謝您的回覆。但那不是我正在尋找的。它與我擁有的其他鏈接類似。讓我爲您提供一些更好的:D http://android.amberfog.com/?p=296 http://sudarmuthu.com/blog/using-arrayadapter-and-listview-in-android-applications 如果你想我可以提供更多:D ...但我正在尋找一個通用的適配器,它可以處理不同種類的List項目。我不必硬編碼任何佈局。 – Ahmed 2012-07-16 17:49:02

+1

我不認爲有任何通用的方法來做到這一點..你可以做的是在充氣之前添加一個'switch'語句來查看。但它沒有任何意義......爲什麼你想要一個適配器?爲每種類型的列表創建一個單獨的適配器.. – 2012-07-16 17:52:07

回答

3

如果您有一個帶有不同對象的列表,這些對象可以是不同類型的,並且需要顯示不同的視圖。這樣做:

讓對象自己定義視圖。在每個對象上實現一個接口ViewProvider。該接口應提供方法getView(),然後可以在適配器中調用該方法。

該適配器現在只能從列表中獲取滿足ViewProviders的元素,並調用方法getView來獲取該視圖。

由於視圖存儲在每個ViewProvider中,您將不必擔心回收視圖,並且只會創建一次。這些字段的更新(如果有的話)也可以在對象一側進行,而不在適配器中進行。但是你必須通過調用notifyDataSetChanged()

+2

感謝您的回覆。我喜歡這個主意,但我仍然不確定這樣做。你能提供一個代碼示例嗎?謝謝 :) – Ahmed 2012-07-27 16:59:49