2014-10-04 109 views
1

上的應用程序工作了一段時間後,我意識到我用android清除arraylist或適配器?

adapter.clear() 
and 
arraylist.clear() 

我可以看到兩者都工作得很好,我想知道這兩者之間的區別!

兩者都在我開始之前調用,asyncTask更新我的服務器信息列表!

+1

你在使用ArrayAdapter嗎?如果你調用ArrayAdapter#clear(),你不需要調用notifyDataSetChanged,因爲它會被自動調用。如果你使用arrayList.clear(),你將需要自己調用notifyDataSetChanged。 – Wenhui 2014-10-04 21:52:57

+0

我在這些地方使用了arrayAdapter和notifyDataSetChanged。 放在其他地方我已經使用ArrayAdapter.clear(和不使用notifyDataSetChanged) 但我不知道是否比其他人更喜歡! – rasmus 2014-10-04 22:10:03

回答

1

您不應該直接清除ArrayListArrayAdapter絕對不保證它保持給定的相同參考列表。事實上,當你用它的過濾器執行搜索時,它會改變。這會使arrayList.clear()失敗。

經驗法則,如果您需要改變或檢索關聯數據......直接從適配器執行。不是你用來構造它的列表。

+0

我正在爲一個RecyclerView的適配器部分工作,只是遇到了你的答案。我將不勝感激,如果你可以權衡我的問題,因爲它具體有一個ArrayList.clear(),你警告,請參閱http://stackoverflow.com/questions/41969397/android-how-do-i-maintain-該視圖換cardviews-IN-A-recyclerview列表 – AJW 2017-01-31 23:45:09

0

適配器=它包含的差異視圖份,陣列

aaraylist保持我們希望在我們的視圖中顯示的數據。

例如:arraylist<HashMap<String,String>> ah= new ArrayList<HashMap<String,String>>();

上述列表中包含的HashMap

,如果我清除ArrayList中不會有數據顯示在列表視圖或GridView的所以這將是空

如果我清楚適配器比它會破壞陣列和視圖的副本,所以輸出將是相同的

相關問題