代码之家  ›  专栏  ›  技术社区  ›  Janusz Daniel Rindt

如何从Android列表视图中获取第一个可见视图

  •  10
  • Janusz Daniel Rindt  · 技术社区  · 15 年前

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

    6 回复  |  直到 14 年前
        1
  •  13
  •   Fedor    15 年前

    实际上,ListView项只是ListView的子项。因此,第一个可见的ListView项是:

    listView.getChildAt(0)
    
        2
  •  4
  •   Austin Wagner    15 年前

    ListView有一个函数 getFirstVisiblePosition 因此,要获得第一个可见视图,代码应该是:

    listView.getChildAt(listView.getFirstVisiblePosition());

        3
  •  3
  •   Vijay C    11 年前

    listView.getChildAt(listView.getFirstVisiblePosition()) 给出第一个可见项,
    但也有可能 列表项。

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

    if (listView.getChildAt(0).getTop() < 0) {
         int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1;
    }
    
        4
  •  1
  •   Enyby    7 年前
    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
  •  0
  •   Michael    9 年前

    您可以使用以下代码:

    for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) {
            View listItem = conversationListView.getChildAt(i);
    }
    
        6
  •  -2
  •   Sanal    9 年前

    listView.scrollBy(0,-40);

    这个效果很好