Listview不会自动更新

时间:2011-08-21 22:53:04

标签: android multithreading user-interface adapter

每次我的activty收到一条消息(来自某个TCP侦听线程),它都会

mLstAdpChatScreen.add(line);
updateUI();



private void updateUI()
{
    runOnUiThread(new Runnable() 
    {
        public void run() 
        {
            mLstAdpChatScreen.notifyDataSetChanged();
            mLstAdpChatScreen.notifyDataSetInvalidated();
            mLstVwChatScreen.requestLayout();
            mLstVwChatScreen.invalidate();
        }
    });
}

虽然这种方法适用于我的大多数列表视图并且它们确实得到了更新,但它并不适用于某个列表视图。我一定错过了什么: - ?

谢谢

1 个答案:

答案 0 :(得分:0)

这应该适用于大多数情况但是我在尝试从数据库更新listview时遇到了同样的问题。我也调用了adapter.notifyDataSetChanged();,但listview根本没有更新,尽管我确认数据已更改,并且ArrayList的大小已增加。

最后,我在我的自定义Adapter中实施了一个方法,从BaseAdapter延伸到那里调用notifyDataSetChanged,就像

一样
public class MyAdapter extends BaseAdapter{
    public void updateData(){
        this.notifyDataSetChanged();
    }
}

然后在Activity,我只是致电adapter.updateData()。这对我有用。非常奇怪。