Как получить первый видимый вид из Android ListView

Есть ли способ получить первый видимый вид из списка в Android?

Я могу получить данные, которые поддерживают первый вид в адаптере, но кажется, что я не могу получить первый вид в ListView.

Я хочу изменить первый видимый вид после завершения действия прокрутки. Я знаю, что мне не следует сохранять ссылки на представление.

Ответ 1

Фактически элементы ListView - это только дети ListView. Итак, первый видимый элемент ListView:

listView.getChildAt(0)

Ответ 2

ListView имеет функцию getFirstVisiblePosition, поэтому для получения первого видимого вида код будет выглядеть следующим образом:

listView.getChildAt(listView.getFirstVisiblePosition());

Ответ 3

Действительно listView.getChildAt(listView.getFirstVisiblePosition()) дает первый видимый элемент,
НО это может быть элемент наполовину видимый.

Чтобы получить первый полностью видимый элемент списка,

if (listView.getChildAt(0).getTop() < 0) {
     int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1;
}

Ответ 4

Вы можете использовать следующий код:

for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) {
        View listItem = conversationListView.getChildAt(i);
}

Ответ 5

listView.scrollBy(0, -40);

Это очень хорошо работает