Android: получение количества видимых детей в списке
Есть ли способ получить подсчет количества видимых дочерних элементов списка?
У меня есть список с информацией, связанной с базой данных, которая может быть изменена в любое время. Когда база данных изменена, я отправляю широковещательную рассылку, уведомляющую класс ui, обрабатывающий представление списка. Затем обновляется дочерний элемент, относящийся к измененным данным. Я достигаю этого, предоставляя каждому элементу listview тег, а затем повторяя над списками, чтобы найти строку, соответствующую тегу из широковещательной передачи.
Я хочу только перебирать видимых детей. Мне не нужно вручную обновлять просмотры, которые не видны, поскольку они будут отражать новые данные при их создании. Я сейчас перебираю listView.getfirstVisiblePosition() в listView.getChildCount(). Это лучше, чем ничего, поскольку я не рассматриваю строки над видимыми строками, но я не хочу также проверять строки под ними.
Я проверил страницу listView разработчиков Android и ничего не нашел. Кто-нибудь знает, как я могу получить количество видимых детей?
Спасибо!
Ответы
Ответ 1
listView.getLastVisiblePosition(), это то, что вы ищете? если не,
Итерация через дочерние представления...
int count = 0;
for (int i = 0; i <= listView.getLastVisiblePosition(); i++)
{
if (listView.getChildAt(i) != null)
{
count++; // saying that view that counts is the one that is not null,
// because sometimes you have partially visible items....
}
}
Ответ 2
Это быстрый способ подсчета видимых детей:
int visibleChildCount = (listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1;
Ответ 3
В связи с комментарием greg7gkb выше - просто хотел указать на случай, если кто-то использует это, чтобы он подсчитал ваш счет. Это должно быть
(listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1
Итак, если последняя видимая была 8, а первая видимая была 5, у вас было бы (8-5) +1 = 4, показывающее: 5,6, 7 и 8.
Похоже, что А. Абири получил это прямо внизу.