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

时间:2011-07-18 22:15:49

标签: android listview count visible

是否有办法计算可见列表视图子项的数量?

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:63)

这是让孩子可见的快速方法:

int visibleChildCount = (listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1;

答案 1 :(得分:30)

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 :(得分:4)

参考greg7gkb上面的评论 - 只是想指出以防任何人使用它,它将使你的计数一个。它应该是

(listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1

因此,如果最后一个可见 8 且第一个可见 5 ,那么您将(8-5)+1 = 4 显示: 5,6,7和8。

看起来A.Abiri就在下面。