Как можно обновить ListView, когда вкладка в Android - PullRequest
2 голосов
/ 25 октября 2009

Мое приложение имеет три вкладки с дисплеем ListView внутри каждой. Как написать код для обновления ListView при нажатии между вкладками?

@Override
public void onTabChanged(String tabId) {        
    if(tabId == "tab_1")
    {
        refresh ListView ???
    }   

}

Ответы [ 3 ]

4 голосов
/ 04 января 2010

Если вы хотите обновить вручную, вы можете позвонить notifyDataSetChanged() на Adapter.

3 голосов
/ 25 октября 2009

Вы не обновляете ListView. Вы гарантируете, что базовый Adapter имеет самые последние данные, и он будет работать с ListView для их отображения. Так, например, если вы используете SimpleCursorAdapter, позвоните requery() на Cursor.

0 голосов
/ 10 февраля 2010

На самом деле вы должны сделать две вещи: - вы должны попросить адаптер уведомить ListView о новых изменениях данных: notifyDataSetChanged () но это вступит в силу в следующий раз, когда ListView потребуется показать представление (скажем, после прокрутки списка). Другая проблема заключается в том, что ListView не будет запрашивать количество строк в списке, поэтому, если список стал короче, вы получите исключение нулевого указателя:)

Я предпочитаю использовать что-то вроде:

if(filterProvider.containsChildren(position)){
// go into the hierarchy
    filterProvider.navigateToChildren(position);
    adapter.notifyDataSetChanged();
    adapter.notifyDataSetInvalidated();
    listView.invalidateViews();
}else{
    int ID = (int)filterProvider.getIdFromPosition(position);
    activity.setResult(ID);
    activity.finish();
}

Код является частью списка с несколькими уровнями (с иерархией)

Привет, Саша Рудан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...