Что делает метод adapter.notifyDataSetInvalidated (), выполняют? Нет никакой документации относительно него.
Я пытаюсь перезагрузить ListView и notifyDataSetChanged, или notifyDataSetInvalidated, кажется, ничего не выполняют.
Это зависит от реализации адаптера ... если вы посмотрите исходный код, вы увидите, что:
notifyDataSetInvalidated ()
вызывает notifyInvalidated ()
класса DataSetObservable
( см. Здесь ) notifyInvalidated ()
вызывает метод onInvalidated ()
для каждый DataSetObserver
( см. здесь ). onInvalidated ()
ничего не делает ...Это его реализация:
public void onInvalidated() {
// Do nothing
}
DataSetObserver
- абстрактный класс, поэтому подкласс должен решать, что делать с onInvalidated ()
.
Насколько я знаю, метод notifyDataSetInvalidated()
останавливает доступ адаптера к данным (в случае, если они недействительны, недоступны и т.д.). Метод notifyDataSetChanged()
обновляет ListView
, чтобы вы могли видеть новые добавленные данные, но вызывать его нужно в потоке UI.
Мне очень помогло посмотреть это видео - там есть два раздела, где упоминаются эти методы и объясняется, как их правильно использовать. Возможно, это поможет и вам :)