Почему listview.getChildCount()
и adapter.getCount()
возвращают разные значения? У меня есть метод onScroll, и внутри него, если я вызываю методы выше, каждый из них возвращает разные значения. Кто-нибудь знает, почему?
количество просмотров списка и количество адаптеров в Android
comment
См. это
- person Shashank Kadne   schedule 02.10.2013
Ответы (2)
ListView.getChildCount()
возвращает количество Views
на экране. Adapter
s getCount()
возвращает общее количество объектов в вашем списке.
У вас может быть 50 String
, скажем, в ArrayAdapter
, но в текущий момент на экране отображается только 10, поэтому ваш счет ListView
будет равен 10, а ваш счет Adapter
будет равен 50.
person
codeMagic
schedule
02.10.2013
Если я делаю
listview.getChildAt(index)
, должно ли index
быть [0,listView.getChildCount() )
или индекс может быть чем-то между [0,adapter.getCount() )
?
- person Cote Mounyo; 02.10.2013
[0,listView.getChildCount() )
. В противном случае вы могли бы получить IndexOutOfBoundsException
, потому что, как показывает мой пример, у вас может быть больше элементов в вашем List
, чем в настоящее время в вашем ListView
.
- person codeMagic; 02.10.2013
Теперь вы можете сделать по-другому, но вам нужно будет обернуть
try/catch
, чтобы поймать IOB Exception
- person codeMagic; 02.10.2013
adapter.getCount()
возвращает общее количество содержащихся в нем объектов. listView.getChildCount()
возвращает количество просмотров, показанных в этом списке. Адаптер использует механизм кеширования, а многие представления используются повторно, поэтому его номер отличается от показанного на adapter.getCount()
person
Roman Bugaian
schedule
02.10.2013
Спасибо за публикацию. +1
- person Cote Mounyo; 02.10.2013