获取RecyclerView子视图

时间:2015-02-25 20:33:30

标签: android android-recyclerview

我正在尝试获取RecyclerView项目的所有视图,但似乎我只能得到第一个。我正在取这样的观点:

LinearLayoutManager manager = (LinearLayoutManager) rv.getLayoutManager();
List<View> list = new ArrayList<View>();

for(int i = 0; i < manager.getItemCount(); i ++ ) {
  manager.scrollToPosition(i);

  View view = manager.findViewByPosition(i);

  if(view == null) {
    Log.i("Null Check", "Null: " + i);
  }

  list.add(view);
}

问题是我一直在RecyclerView中获取第一个View。如果我有10个项目,则将获取第一个项目,并将其他9个项目记录为空。它就像scrollToPosition(i)无法正常工作。

这是scrollToPosition(i) javadoc:

  

滚动RecyclerView以使位置可见。 RecyclerView   将滚动制作目标所需的最小金额   位置可见。如果您正在寻找类似的行为   android.widget.ListView.setSelection(int)或   android.widget.ListView.setSelectionFromTop(int,int),使用   scrollToPositionWithOffset(int,int)。 请注意滚动位置更改   在下一次布局调用之前不会反映出来。

因为最后一句话我很担心。你觉得我怎么解决这个问题?

1 个答案:

答案 0 :(得分:3)

通过指定的RecyclerView.Adapter而不是布局管理器检索RecyclerView子项。布局管理器帮助布置子视图(即测量和布局),但您应该咨询指定的Adapter以管理RecyclerView的数据,而不是布局管理器。