Почему getCount в адаптере вызывается так много раз?
У меня есть пользовательский список, и для его просмотра требуется несколько минут. Когда я пытался проверить, где проблема, я увидел, что даже когда у меня есть только 1 элемент в списке, метод getCount() вызывается 5 раз, getVIew() вызывается один раз, затем getCount() является вызывая больше времени.
В целом getCount() вызывается 7 раз. Это имеет смысл?
Спасибо!
Ответы
Ответ 1
Вы можете увидеть здесь различные внутренние вызовы метода Adapter.getCount()
.
Но вы должны иметь в виду, что вы не можете контролировать, как этот метод будет вызван.
Его можно вызвать несколько раз, и поэтому вы должны держать его как можно быстрее.
Ответ 2
getCount()
вызывается слишком много раз, потому что App-USER
может update its list
(может добавлять данные в свою память) в любое время, и поэтому мы возвращаем (storage).size()
(общее количество элементов).
Ответ 3
Адаптер getCount()
будет вызываться в следующих случаях.
1) при установке адаптера в режим просмотра списка/сетки.
2), когда мы назовем notifyDataSetChanged
на адаптере.
Итак, проверьте свой код, вы можете делать вышеприведенные случаи больше времени или рекурсивно.
Ответ 4
У вас должна быть кнопка поиска, которая обновляет адаптер при поиске. Этот метод называется рисованием вида несколько раз, если внутри этого метода есть setAdapter
, тогда getCount
будет вызываться много раз и закончится возвратом 0, и вы не будете заполнены.