上的應用程序工作了一段時間後,我意識到我用android清除arraylist或適配器?
adapter.clear()
and
arraylist.clear()
我可以看到兩者都工作得很好,我想知道這兩者之間的區別!
兩者都在我開始之前調用,asyncTask更新我的服務器信息列表!
上的應用程序工作了一段時間後,我意識到我用android清除arraylist或適配器?
adapter.clear()
and
arraylist.clear()
我可以看到兩者都工作得很好,我想知道這兩者之間的區別!
兩者都在我開始之前調用,asyncTask更新我的服務器信息列表!
您不應該直接清除ArrayList
。 ArrayAdapter
絕對不保證它保持給定的相同參考列表。事實上,當你用它的過濾器執行搜索時,它會改變。這會使arrayList.clear()
失敗。
經驗法則,如果您需要改變或檢索關聯數據......直接從適配器執行。不是你用來構造它的列表。
我正在爲一個RecyclerView的適配器部分工作,只是遇到了你的答案。我將不勝感激,如果你可以權衡我的問題,因爲它具體有一個ArrayList.clear(),你警告,請參閱http://stackoverflow.com/questions/41969397/android-how-do-i-maintain-該視圖換cardviews-IN-A-recyclerview列表 – AJW 2017-01-31 23:45:09
適配器=它包含的差異視圖份,陣列
aaraylist保持我們希望在我們的視圖中顯示的數據。
例如:arraylist<HashMap<String,String>> ah= new ArrayList<HashMap<String,String>>();
上述列表中包含的HashMap
,如果我清除ArrayList中不會有數據顯示在列表視圖或GridView的所以這將是空
如果我清楚適配器比它會破壞陣列和視圖的副本,所以輸出將是相同的
你在使用ArrayAdapter嗎?如果你調用ArrayAdapter#clear(),你不需要調用notifyDataSetChanged,因爲它會被自動調用。如果你使用arrayList.clear(),你將需要自己調用notifyDataSetChanged。 – Wenhui 2014-10-04 21:52:57
我在這些地方使用了arrayAdapter和notifyDataSetChanged。 放在其他地方我已經使用ArrayAdapter.clear(和不使用notifyDataSetChanged) 但我不知道是否比其他人更喜歡! – rasmus 2014-10-04 22:10:03