2011-06-19 52 views
0

我正在從資源陣列創建ArrayAdapter<String>。然後我想用arrayAdapter.remove(String)方法從列表中刪除一個項目。我使用arrayAdapter.getItem(int position)找到了正確的字符串。但是當我調用刪除方法時,我最終得到了UnsupportedOperationException,我不知道發生了什麼。Android - 從陣列適配器中刪除<string>

於6月20日編輯
我做了從資源中直接刪除適配器並通知適配器刪除的操作。我正在做公共布爾onContextItemSelected(MenuItem項目)的操作;這種方法刪除後,我得到一個

ArrayAdapter.createViewFromResource(int, View, ViewGroup, int) line: 398  

NullPointerException 

我想以後我刪除資源的項目,一些沒有正確配置..

回答

1

一個ArrayAdapter被渲染的內容資源陣列英寸您不應該試圖直接更改陣列適配器的內容。而改變底層資源數組。

所以基本上只是從資源數組中刪除項目。

如果你有像這樣定義的列表工作:

List<String> resources = YOUR RESOURCE LIST; 

您可以用removeItemAt呼叫刪除一個元素:

resources.removeItemAt(position); 

這在大多數情況下工作。在某些情況下,您將使用在呈現列表視圖的活動之外修改的列表。在這些情況下,將ArrayAdapter的notifyOnChanged(我想我沒有在我之前的API引用)設置爲false ...然後手動調用notifyDataSetChanged。

2

您應該從數組中刪除元素,然後通知適配器:

itemCart.m_items.remove(<index of element to remove>); 
this.m_adapter.notifyDataSetChanged(); 

附:使用搜索問題已經存在。