了解listview上的notifyDataSetChanged

时间:2012-01-22 01:58:18

标签: android listview refresh

如果数据发生了变化,我会尝试刷新listview。

lv = (ListView) this.findViewById(android.R.id.list);
        mMyAdapter=(ListAdapter) new ImageAndTextListAdapter(this, total_list);
         lv.setAdapter(mMyAdapter);
        ((ArrayAdapter<ImageAndText>) mMyAdapter).notifyDataSetChanged();

因此,在这种情况下,数据是total_list,如果它被更改,那么适配器会通知列表视图,然后列表视图会自动刷新?或者我需要在那里添加一些东西?

2 个答案:

答案 0 :(得分:1)

根据the documentation,这是应该发生的事情。如果没有发生,那么它很可能是Android中的一个错误(因为它似乎是Android 1.6中的here)。意思是,你的假设是正确的,但错误确实潜入 - 但现在可能已经解决了。 :)

答案 1 :(得分:1)

notifyDataSetChanged()用于告诉listadapter您提供它的数据集已更改。这告诉listadapter它需要重新加载数据。这很重要,因为listadapter的许多默认值都包括使用缓存。只应在实际更改数据后调用notifyDataSetChanged()。