Я хочу выполнить определенное действие с элементами списка, которые пользователь может видеть без прокрутки. Есть ли способ получить количество отображаемых элементов или есть какой-либо другой способ приблизиться к этому?
Есть ли способ узнать, сколько элементов отображается в списке?
comment
Проверьте этот вопрос.
- person Flo   schedule 13.05.2011
comment
Это очень похоже на то, что я хочу, за исключением того, что по какой-то причине getLastVisiblePosition всегда возвращает -1. Знаете ли вы какую-либо причину, по которой это произошло бы?
- person NotACleverMan   schedule 13.05.2011
comment
Когда вы вызываете метод getLastVisiblePosition()?
- person Flo   schedule 13.05.2011
comment
После того, как я заполнил свой ListView. Это последняя вещь в onCreate()
- person NotACleverMan   schedule 13.05.2011
comment
Mh Я думаю, что это может быть слишком рано, так как на данный момент Android еще не закончил упорядочивать все элементы View. Таким образом, Android еще не может сказать вам, какой будет последняя видимая позиция. Я думаю, вам нужно вызвать метод через некоторое время после завершения onResume().
- person Flo   schedule 13.05.2011
comment
Извините, на самом деле это уже последнее, что есть в onResume, и при нажатии кнопки тоже. Я просто не думал, что упоминание о них что-то изменит.
- person NotACleverMan   schedule 13.05.2011
comment
Mh, когда он находится в onResume(), это еще слишком рано, но, как вы говорите, он также не работает в OnClickListener, причина такого поведения должна быть чем-то другим. OnClickListener определенно не вызывается до тех пор, пока представление не будет готово.
- person Flo   schedule 13.05.2011
Ответы (3)
Я не знаю, каково ваше требование, но знать элементы списка, которые в настоящее время не видны
ListView.getFirstVisiblePosition();
ListView.getLastVisiblePosition();
person
ingsaurabh
schedule
13.05.2011
Это именно то, что мне нужно. Спасибо.
- person NotACleverMan; 13.05.2011
Знаете ли вы какую-либо причину, по которой getLastVisiblePosition возвращает -1?
- person NotACleverMan; 13.05.2011
если в ListView нет элемента
- person ingsaurabh; 13.05.2011
У меня есть 10 жестко закодированных, и я вызываю getLastVisiblePosition после того, как они показаны, но он все равно возвращает -1
- person NotACleverMan; 13.05.2011
проверьте, возвращает ли метод getCount() правильное значение перед вызовом последнего элемента, также разместите здесь свой xml
- person ingsaurabh; 13.05.2011
@NotACleverMan
ListView
нужно сначала измерить и разложить. Установите адаптер и установите OnGlobalLayoutListener
на ViewTreeObserver
. После события onGlobalLayout
вы можете вызывать эти методы.
- person Yaroslav Mytkalyk; 16.01.2015
Вы можете найти количество элементов listview
ниже:
int count = listview.getChildCount();
person
Nikhil
schedule
13.05.2011
Ваш ListView
может реализовать onScrollListener
, где вы можете переопределить его метод onScroll
. Метод получает следующие аргументы:
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){}
Возможно, вы можете начать с этого.
person
Tomislav Novoselec
schedule
13.05.2011