Подтвердить что ты не робот

Android: получение количества видимых детей в списке

Есть ли способ получить подсчет количества видимых дочерних элементов списка?

У меня есть список с информацией, связанной с базой данных, которая может быть изменена в любое время. Когда база данных изменена, я отправляю широковещательную рассылку, уведомляющую класс ui, обрабатывающий представление списка. Затем обновляется дочерний элемент, относящийся к измененным данным. Я достигаю этого, предоставляя каждому элементу listview тег, а затем повторяя над списками, чтобы найти строку, соответствующую тегу из широковещательной передачи.

Я хочу только перебирать видимых детей. Мне не нужно вручную обновлять просмотры, которые не видны, поскольку они будут отражать новые данные при их создании. Я сейчас перебираю listView.getfirstVisiblePosition() в listView.getChildCount(). Это лучше, чем ничего, поскольку я не рассматриваю строки над видимыми строками, но я не хочу также проверять строки под ними.

Я проверил страницу listView разработчиков Android и ничего не нашел. Кто-нибудь знает, как я могу получить количество видимых детей?

Спасибо!

4b9b3361

Ответ 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.

Похоже, что А. Абири получил это прямо внизу.