Есть ли разница между ListView.invalidateViews()
и Adapter.notifyDataSetChanged()
?
Есть ли разница между "ListView.invalidateViews()" и "Adapter.notifyDataSetChanged()"?
Ответ 1
Ну да, есть.
ListView.invalidateViews()
используется, чтобы сообщить ListView о недействительности всех его дочерних элементов (перерисовать их).
Обратите внимание, что не должно быть равного количества просмотров, чем элементов. Это потому, что ListView перерабатывает свои представления элементов и перемещает их по экрану разумным способом во время прокрутки.
Adapter.notifyDataSetChanged()
, с другой стороны, заключается в том, чтобы сообщить наблюдателю адаптера, что содержимое того, что адаптируется, изменилось. Уведомление об изменении набора данных приведет к тому, что listview снова вызовет ваши методы адаптеров, чтобы настроить полосы прокрутки, регенерировать представления элементов и т.д.
В большинстве случаев вы хотели бы использовать notifyDataSetChanged
вместо invalidateViews
, но это, безусловно, зависит от того, что вы пытаетесь выполнить.