我有一个listfragment,其中的适配器定义如下:
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 :(得分:1)
您可以找到StackOverflow anwser解释在哪种情况下notifyDataSetChanged()
方法有效。以下是该答案的引用:
对于
ArrayAdapter
,notifyDataSetChanged
仅在您使用时才有效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);
并在每次要刷新适配器时使用它。