【发布时间】:2017-07-14 13:05:59
【问题描述】:
我尝试向我的 GridLayout RecyclerView 添加水平分隔线。但是由于某种原因,分隔线没有出现。
作为替代方案,我使用了带有 2 个参数的 addItemDecoration 方法,其中第二个参数是要添加 ItemDecoration 的索引。
RecyclerView r = (RecyclerView) findViewById(R.id.recycler_view);
r.setAdapter(new AppAdapter(this, fetchData());
r.setLayoutManager(new GridLayoutManager(this, 5));
r.addItemDecoration(new DividerItemDecoration(this, GridLayoutManager.HORIZONTAL), 2);
它强制关闭,但出现以下异常:
Caused by: java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
这个尺寸意味着什么?为什么是零?
可能是因为我在 Activity 而不是 Fragment 中使用了这个 RecyclerView?
P.S.:适配器没有问题;它不是空的。
【问题讨论】:
-
当你做 addItemDecoration(new DividerItemDecoration(this, GridLayoutManager.HORIZONTAL), 2);您正在尝试在索引 2 处添加分隔符,但错误告诉您这是超出范围的,因为 RecyclerView 中的子项数为 0(它为空)。去掉那条线,如果有任何显示,请告诉我。
-
适配器或recyclerView不为空。显示正确的列表而不写该行。
-
您的列表中有多少项?如果少于 10 行(也就是少于 2 行),那么这可能是问题
-
超过 50 项。
标签: android android-recyclerview indexoutofboundsexception gridlayoutmanager