【发布时间】:2015-02-25 20:33:29
【问题描述】:
我正在尝试获取 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 中获取第一个视图。如果我有 10 个项目,将获取第一个项目,其他 9 个项目将记录为空。就像scrollToPosition(i) 工作不正常。
这是scrollToPosition(i)javadoc:
滚动 RecyclerView 以使位置可见。回收站视图 将滚动制作目标所需的最小数量 位置可见。如果您正在寻找类似的行为 android.widget.ListView.setSelection(int) 或 android.widget.ListView.setSelectionFromTop(int, int),使用 scrollToPositionWithOffset(int, int)。 注意滚动位置的变化 直到下一次布局调用才会反映。
因为最后一句话,我很担心。你觉得我该如何解决这个问题?
【问题讨论】:
-
正如其他人也问的那样,您为什么要这样做?如果你想要所有视图,那么使用 RecyclerView 有什么意义呢?另外,是的,您没有获得新视图,因为 RecyclerView 在新的布局传递发生之前不会滚动到新位置。
标签: android android-recyclerview