如何获取lListView上的所有完整可见对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (86)

我有一个ListView,其中包含更多的元素,然后我可以一次显示。现在我想索引关闭所有元素,这是完全可见的( - >不包括那些只是部分可见)。我使用getFirstVisiblePosition()&getLastVisiblePosition()到for循环来迭代它们,但这些方法并不准确

有没有更好的解决方案?

提问于
用户回答回答于

可以通过getChildAt()访问。

// getTop() and getBottom() are relative to the ListView, 
//   so if getTop() is negative, it is not fully visible
int first = 0;
if(listView.getChildAt(first).getTop() < 0)
    first++;

int last = listView.getChildCount() - 1;
if(listView.getChildAt(last).getBottom() > listView.getHeight())
    last--;

// Now loop through your rows
for( ; first <= last; first++) {
    // Do something
    View row = listView.getChildAt(first);
}

用户回答回答于

扩展你在ListView适配器的getView中传递视图,并覆盖onAttachedToWindow和onDetachedToWindow方法以跟踪可见的索引。

扫码关注云+社区