Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Ну да, есть.

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

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

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