2011-03-07 54 views
0

我有一个4项列表,我已经使用了listview。我想在接收内部事件时动态更改字符串。我看到,当我收到活动时,我正在设置正确的字符串,但然后调用notifyDataSetChanged()不更新列表视图

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

但该列表没有更新。

+1

请为此提供更多的源代码。 – Reno 2011-03-07 08:07:05

回答

2

我有过相同的经历。原因是列表适配器在错误的线程上更新,即不是UI线程。这很容易通过改变通过UI线程上的适配器的数据(如我在其他帖子中找到)解决:

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

当然,你总是可以创建一个(内)类实现Runnable所提供的名单适配器和数据添加,插入等。

注意:调用notifyDataSetInvalidated()或notifyDataSetChanged()将不是必需的,因为它是默认调用的,除非使用setNotifyOnChange(false)明确地关闭它。

0

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

对不起,我的英文不好

相关问题