我正在尝试获取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)。 请注意滚动位置更改 在下一次布局调用之前不会反映出来。
因为最后一句话我很担心。你觉得我怎么解决这个问题?
答案 0 :(得分:3)
通过指定的RecyclerView.Adapter
而不是布局管理器检索RecyclerView子项。布局管理器帮助布置子视图(即测量和布局),但您应该咨询指定的Adapter以管理RecyclerView的数据,而不是布局管理器。