2012-03-26 67 views
29

而不是創建多個活動,我想根據需要更改ListViewArrayAdapter。我在API中沒有看到有關是否可以多次撥打setAdapter()的提示。是否可以動態更改ListView的適配器?

更具體地說,我想開始一個有ListView的活動。在這個例子中,ListView用來自CategoryArrayAdapterlistView.setAdapter(this)初始化。

然後用戶選擇一個類別。如果不開始新的活動,代碼將爲相同的ListView設置新的適配器。新的適配器,如ItemArrayAdapter調用listView.setAdapter(this)

有人有成功完成這項工作的經驗,或知道爲什麼不應該這樣做的具體原因?

回答

30

我在API中沒有看到任何關於是否可以多次調用setAdapter()的提示。

簡單的答案是YES,我也做過類似的事情。

這正是爲什麼Adapter存在並在API中提供的原因。每個列表項目的實際內容(模型)以及它如何呈現(視圖)都是在android.widget.Adapter中分離和實現的,而不是直接綁定到android.widget.AdapterView。只要您的適配器已正確實現,您只需調用setAdapter()方法即可交換/更改綁定到ListView的實際底層適配器。

1

重置適配器是好的,但請注意,這樣做時可能會出現GUI故障,因爲正在更改適配器的視圖必須重新繪製新數據。除此之外,你應該沒問題。

+0

你以前做過嗎? – 2012-03-26 19:49:29

+0

@JeffAxelrod:是的,我已經做到了。 – Bondax 2013-07-01 05:22:33

相關問題