有没有办法从Android中的ListView中获取第一个可见的View?
我可以获取支持适配器中第一个View的数据,但似乎我无法获得ListView中的第一个View。
我想在滚动操作完成后更改第一个可见视图。我知道我不应该保存对视图的引用。
答案 0 :(得分:13)
实际上ListView项只是ListView的子项。所以第一个可见的ListView项是:
listView.getChildAt(0)
答案 1 :(得分:3)
ListView有一个函数getFirstVisiblePosition
所以要获得第一个可见视图,代码将是:
listView.getChildAt(listView.getFirstVisiblePosition());
答案 2 :(得分:3)
确实listView.getChildAt(listView.getFirstVisiblePosition())
给出了第一个可见项目,但它可以是半可见列表项。
要获得第一个完全可见的列表项,
if (listView.getChildAt(0).getTop() < 0) {
int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1;
}
答案 3 :(得分:0)
您可以使用以下代码:
for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) {
View listItem = conversationListView.getChildAt(i);
}
答案 4 :(得分:0)
Object item = listView.getItemAtPosition(listView.getFirstVisiblePosition());
对于第一个完全可见的列表项:
int pos = listView.getFirstVisiblePosition();
if (listView.getChildCount() > 1 && listView.getChildAt(0).getTop() < 0) pos++;
Object item = listView.getItemAtPosition(pos);
答案 5 :(得分:-2)
listView.scrollBy(0,-40);
这非常有效