Ответ 1
Фактически элементы ListView - это только дети ListView. Итак, первый видимый элемент ListView:
listView.getChildAt(0)
Есть ли способ получить первый видимый вид из списка в Android?
Я могу получить данные, которые поддерживают первый вид в адаптере, но кажется, что я не могу получить первый вид в ListView.
Я хочу изменить первый видимый вид после завершения действия прокрутки. Я знаю, что мне не следует сохранять ссылки на представление.
Фактически элементы ListView - это только дети ListView. Итак, первый видимый элемент ListView:
listView.getChildAt(0)
ListView имеет функцию getFirstVisiblePosition
, поэтому для получения первого видимого вида код будет выглядеть следующим образом:
listView.getChildAt(listView.getFirstVisiblePosition());
Действительно listView.getChildAt(listView.getFirstVisiblePosition())
дает первый видимый элемент,
НО это может быть элемент наполовину видимый.
Чтобы получить первый полностью видимый элемент списка,
if (listView.getChildAt(0).getTop() < 0) {
int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1;
}
Вы можете использовать следующий код:
for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) {
View listItem = conversationListView.getChildAt(i);
}
listView.scrollBy(0, -40);
Это очень хорошо работает