Есть ли разница между «ListView.invalidateViews ()» и «Adapter.notifyDataSetChanged ()»?

17

Есть ли разница между ListView.invalidateViews() и Adapter.notifyDataSetChanged() ?     

задан Gaurav Agarwal 20.05.2012 в 21:58
источник

1 ответ

39

Ну да, есть.

ListView.invalidateViews() используется, чтобы сообщить ListView о недействительности всех его дочерних элементов (перерисовать их). Обратите внимание, что нет необходимости иметь равное количество просмотров, чем элементы. Это потому, что ListView перерабатывает свои представления элементов и перемещает их по экрану разумным способом во время прокрутки.

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

В большинстве случаев вы хотите использовать notifyDataSetChanged вместо invalidateViews , но это, безусловно, зависит от того, что вы пытаетесь выполнить.

    
ответ дан K-ballo 20.05.2012 в 22:01
источник