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

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

Ответы на вопрос(1)

Решение Вопроса

ListView.invalidateViews() используется, чтобы сказать ListView, чтобы сделать недействительными все его дочерние представления элементов (перерисовать их). Note that there not need to be an equal number of views than items. Это потому, что ListView повторно обрабатывает свои представления элементов и перемещает их по экрану во время прокрутки.

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

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

 20 мая 2012 г., 22:24
@ черная ворона: это трудный пример для поиска. Если вы все делаете правильно, тоinvalidateViews будет полезен, только если вам нужно перерисовать видимые элементы, но ничего на них не изменилось ...
 20 мая 2012 г., 22:14
У вас есть место для 10 просмотров на экране, и у вас есть 20 в вашем адаптере ... так что у вас есть 10 просмотров и 20 элементов.
 19 окт. 2013 г., 16:39
@GauravAgarwal: хорошее использованиеinvalidateViews будет изменить размер шрифта вашегоListView: вы не касаетесь данных, но делаете рендеринг.
 Gaurav Agarwal20 мая 2012 г., 22:11
Я немного растерялся, когда ты говоришьNote that there not need to be an equal number of views than items , В чем разница между взглядами и предметами.
 20 мая 2012 г., 22:12
@black crow: просмотр списка не создает представления для каждого элемента. Вместо этого он обычно имеет только количество представлений, которые поместятся на экране, плюс один, и перемещает их по мере прокрутки. Проще говоря: он не создает представления для элементов, которые не видны.

Ваш ответ на вопрос