Как получить первый видимый вид из списка Android ViewView - PullRequest
10 голосов
/ 24 июня 2010

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

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

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

Ответы [ 6 ]

13 голосов
/ 24 июня 2010

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

listView.getChildAt(0)
3 голосов
/ 25 февраля 2015

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

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

if (listView.getChildAt(0).getTop() < 0) {
     int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1;
}
3 голосов
/ 24 июня 2010

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

listView.getChildAt(listView.getFirstVisiblePosition());

0 голосов
/ 17 июня 2018
Object item = listView.getItemAtPosition(listView.getFirstVisiblePosition());

Для первого полностью видимого элемента списка:

int pos = listView.getFirstVisiblePosition();
if (listView.getChildCount() > 1 && listView.getChildAt(0).getTop() < 0) pos++;
Object item = listView.getItemAtPosition(pos);
0 голосов
/ 19 августа 2016

listView.scrollBy (0, -40);

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

0 голосов
/ 21 июня 2016

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

for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) {
        View listItem = conversationListView.getChildAt(i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...