Listview не обновляется автоматически - PullRequest
0 голосов
/ 22 августа 2011

каждый раз, когда мой актив получает сообщение (из некоторого потока прослушивания TCP), он делает

mLstAdpChatScreen.add(line);
updateUI();



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

Хотя этот подход работает на большинстве моих списков и обновляется, он не подходит для определенного списка. Я должен что-то упустить: -?

Спасибо

1 Ответ

0 голосов
/ 22 августа 2011

Это должно работать в большинстве случаев, однако у меня возникла та же проблема при попытке обновить представление списка из базы данных.Я тоже позвонил adapter.notifyDataSetChanged();, но listview вообще не обновлялся, хотя я мог подтвердить, что данные были изменены, а размер ArrayList увеличился.

В конце я реализовал метод внутри своегообычай Adapter простирающийся от BaseAdapter только для вызова notifyDataSetChanged там, как

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

Затем в Activity я просто звоню adapter.updateData().И это сработало для меня.Очень странно.

...