如何在listView中获取孩子的实际索引



我当前正在使用getChildAt方法将子行放入ListView中。这样做的问题是,只有在将ListView一直滚动到顶部时才能正确获取孩子。

如果我要向下滚动一点,以使第一行被隐藏并调用位置1的getChildAt方法,它将获得ListView中第三的视图。

有没有办法使孩子视图具有实际位置而不是在屏幕上可见的位置?因此,在上面的情况下,getChildAt仍将返回视图(第二个孩子),即使在屏幕上不可见。

public View getViewByPosition(int pos, ListView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (pos < firstListItemPosition || pos > lastListItemPosition ) {
    return listView.getAdapter().getView(pos, null, listView);
} else {
    final int childIndex = pos - firstListItemPosition;
    return listView.getChildAt(childIndex);
}}

参考:Android -ListView获取项目视图按位置

最新更新