android - listview按位置获取项目视图

ala*_*how 70 android android-listview android-adapter android-view

我有自定义适配器(基本适配器)的listview.我想按位置从listview获取视图.我试过了mListView.getChildAt(position),但它没有用.如何按位置获取项目视图?

VVB*_*VVB 247

用这个 :

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请添加标头计数:final int childIndex = pos + getHeaderViewsCount() - firstListItemPosition; (6认同)
  • 将null传递给getView方法时,将强制它创建一个新视图,它不会使用已存在的视图. (6认同)
  • 也许我不理解这个问题......但他似乎在列表视图项目中按位置寻找子视图...所以onItemClick(AdapterView <?>)适配器,View v,int pos,long id){ VIEWTYPE mView =(VIEWTYPE)v.findViewById(R.id.desiredview)} ...也许他要求非用户交互方法? (2认同)

小智 14

您只能从ListView获取可见的View,因为ListView中的行视图是可重用的.如果您使用,mListView.getChildAt(0)您将获得第一个可见视图.此视图与位于适配器的项目相关联mListView.getFirstVisiblePosition().