notifyDataSetChanged()不更新列表视图
问题描述:
我有一个4项列表,我已经使用了listview。我想在接收内部事件时动态更改字符串。我看到,当我收到活动时,我正在设置正确的字符串,但然后调用notifyDataSetChanged()不更新列表视图
mAdapter.notifyDataSetInvalidated();
mAdapter.notifyDataSetChanged();
但该列表没有更新。
答
我有过相同的经历。原因是列表适配器在错误的线程上更新,即不是UI线程。这很容易通过改变通过UI线程上的适配器的数据(如我在其他帖子中找到)解决:
runOnUiThread(new Runnable() {
public void run() {
// code that changes the list adapter data
}
});
当然,你总是可以创建一个(内)类实现Runnable所提供的名单适配器和数据添加,插入等。
注意:调用notifyDataSetInvalidated()或notifyDataSetChanged()将不是必需的,因为它是默认调用的,除非使用setNotifyOnChange(false)明确地关闭它。
答
我认为notifyDataSetChanged只适用于在适配器上使用add(或insert),remove或clear函数。 您可以重建列表适配器强制刷新listView。
对不起,我的英文不好
请为此提供更多的源代码。 – Reno 2011-03-07 08:07:05