如何从Android ListView获取第一个可见的视图

有没有办法让第一个可见的视图从Android的ListView?

我可以得到支持在适配器中的第一个视图的数据,但似乎我无法得到ListView中的第一个视图。

我想在滚动操作完成后更改第一个可见视图。 我知道我不应该保存对视图的引用。

Solutions Collecting From Web of "如何从Android ListView获取第一个可见的视图"

实际上,ListView项目只是ListView的子项。 所以第一个可见的ListView项目是:

listView.getChildAt(0) 

ListView有一个函数getFirstVisiblePosition所以为了得到第一个可见的视图,代码将是:

listView.getChildAt(listView.getFirstVisiblePosition());

确实listView.getChildAt(listView.getFirstVisiblePosition())给出了第一个可见的项目,
但它可能是一半可见列表项目。

要获得第一个完全可见的列表项目,

 if (listView.getChildAt(0).getTop() < 0) { int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1; } 

listView.scrollBy(0,-40);

这工作得很好

您可以使用下面的代码:

 for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) { View listItem = conversationListView.getChildAt(i); }