Android:获取列表视图中可见子项的计数

Chr*_*ris 22 android listview count visible

有没有办法计算可见的listview孩子的数量?

我有一个listview,信息链接到一个可以随时更改的数据库.当数据库发生变化时,我发出一个广播通知处理列表视图的ui类.然后更新与改变的数据有关的子元素.我通过为每个listview项提供一个标记来实现这一点,然后遍历listviews以找到与广播中的标记匹配的行.

我想只迭代可见的孩子.我无需手动更新不可见的视图,因为它们将在创建时反映新数据.我目前从listView.getfirstVisiblePosition()迭代到listView.getChildCount().这比没有好,因为我没有检查可见行上方的行,但我也不想检查它们下面的行.

我检查了android开发人员listView页面并没有找到任何东西.有人知道我可以得到可见孩子的数量吗?

谢谢!

A. *_*iri 63

这是获得可见儿童数量的快捷方法:

int visibleChildCount = (listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1;
Run Code Online (Sandbox Code Playgroud)

  • 我认为作者必须准确地将这个答案标记为正确答案. (2认同)

Nik*_*ski 31

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....
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 有帮助,谢谢.严格来说,如果你想要一个视图计数,你应该做getLastVisiblePosition() - getFirstVisiblePosition(). (6认同)