listfragment中的notifyDataSetChanged什么都不做

时间:2015-02-11 17:55:31

标签: android sqlite android-listfragment

我有一个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();

1 个答案:

答案 0 :(得分:1)

您可以找到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);

并在每次要刷新适配器时使用它。