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