每次我的activty收到一条消息(来自某个TCP侦听线程),它都会
mLstAdpChatScreen.add(line);
updateUI();
private void updateUI()
{
runOnUiThread(new Runnable()
{
public void run()
{
mLstAdpChatScreen.notifyDataSetChanged();
mLstAdpChatScreen.notifyDataSetInvalidated();
mLstVwChatScreen.requestLayout();
mLstVwChatScreen.invalidate();
}
});
}
虽然这种方法适用于我的大多数列表视图并且它们确实得到了更新,但它并不适用于某个列表视图。我一定错过了什么: - ?
谢谢
答案 0 :(得分:0)
这应该适用于大多数情况但是我在尝试从数据库更新listview时遇到了同样的问题。我也调用了adapter.notifyDataSetChanged();
,但listview根本没有更新,尽管我确认数据已更改,并且ArrayList
的大小已增加。
最后,我在我的自定义Adapter
中实施了一个方法,从BaseAdapter
延伸到那里调用notifyDataSetChanged
,就像
public class MyAdapter extends BaseAdapter{
public void updateData(){
this.notifyDataSetChanged();
}
}
然后在Activity
,我只是致电adapter.updateData()
。这对我有用。非常奇怪。