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

时间:2010-06-24 14:35:10

标签: android android-listview

有没有办法从Android中的ListView中获取第一个可见的View?

我可以获取支持适配器中第一个View的数据,但似乎我无法获得ListView中的第一个View。

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

6 个答案:

答案 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);

这非常有效