2009-10-25 3 views
2

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

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

} 

ответ

3

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

4

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

0

На самом деле вы должны сделать две вещи: - вы должны спросить адаптер уведомить 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(); 
} 

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

Greetings, Sasha Rudan

Смежные вопросы