有没有一种方法可以在Android中从ListView中获取第一个可见的View?
我可以获取适配器中第一个View的数据,但似乎无法获取ListView中的第一个View。
我想在滚动操作完成后更改第一个可见的视图。我知道不应该保存对视图的引用。
有没有一种方法可以在Android中从ListView中获取第一个可见的View?
我可以获取适配器中第一个View的数据,但似乎无法获取ListView中的第一个View。
我想在滚动操作完成后更改第一个可见的视图。我知道不应该保存对视图的引用。
实际上,ListView的项目只是ListView的子项。因此,第一个可见的ListView项目是:
listView.getChildAt(0)
ListView有一个函数getFirstVisiblePosition
,用于获取第一个可见视图,代码如下:
listView.getChildAt(listView.getFirstVisiblePosition());
listView
是指ListView对象的实例。实际上,listView.getChildAt(listView.getFirstVisiblePosition())
可以获得第一个可见的列表项,
但是它可能是半个可见的列表项。
要获取第一个完全可见的列表项,
if (listView.getChildAt(0).getTop() < 0) {
int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1;
}
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);
for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) {
View listItem = conversationListView.getChildAt(i);
}
listView.scrollBy(0, -40);
这个非常有效