2015-02-11 11 views
0

我有一個適配器listfragment這樣定義:在listfragment notifyDataSetChanged什麼也不做

ArrayAdapter<String> aa; 
    ArrayList<String> arrayList = new ArrayList<String>(); 

aa = new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1, arrayList); 
     setListAdapter(aa); 

我使用這項目從SQLite數據庫

arrayList.add 

添加到我的列表問題是,notify data has change什麼都不做(即時從sqlite刪除元素,所以我需要刷新arraylist的內容)

我這樣做:

aa.notifyDataSetChanged(); 
+0

如何從SQLite重新加載適配器? – Simon 2015-02-11 17:58:46

回答

0

你可以找到一個StackOverflow anwser解釋在哪種情況下notifyDataSetChanged()方法的工作原理。下面是這個問題的答案報價:

對於ArrayAdapternotifyDataSetChanged如果使用 add()insert()remove()只能和clear()Adapter

我猜你是一個數據庫上執行的操作,但你是不是Adapter對象執行任何操作。在你的情況下,你應該每次都要設置適配器,當你想加載新的數據。 您可以使用現有的代碼如下:

adapter = new ArrayAdapter<String>(getActivity(), 
    android.R.layout.simple_list_item_1, arrayList); 

setListAdapter(adapter); 

此外,你可以用這個代碼放到一個方法,如:

void refreshAdapter(ArrayList<String> arrayList); 

,當你想更新你的適配器用的時候。