notifyDataSetChanged()不更新列表视图

时间:2011-03-07 07:59:51

标签: android

我有4个项目的列表,我使用了listview。我想在收到内部事件时动态更改字符串。我看到当我收到事件时,我正确设置字符串,然后调用

mAdapter.notifyDataSetInvalidated();
mAdapter.notifyDataSetChanged();

但列表没有更新。

2 个答案:

答案 0 :(得分:2)

我有同样的经历。原因是列表适配器在错误的线程上更新,即不是UI线程。通过更改UI线程上的适配器数据(正如我在其他帖子中找到的那样),可以轻松解决这个问题:

runOnUiThread(new Runnable() {
     public void run() {
         // code that changes the list adapter data
     }
});

当然,您总是可以创建一个实现Runnable的(内部)类,该类随列表适配器和要添加,插入等的数据一起提供。

注意:默认情况下调用notifyDataSetInvalidated()或notifyDataSetChanged()是没有必要的,除非你用setNotifyOnChange(false)显式关闭它;

答案 1 :(得分:0)

我认为只有在适配器上使用add(或insert),remove或clear函数时notifyDataSetChanged才有效。 您可以重建列表适配器以强制刷新listView。

对不起我的英语不好