【发布时间】:2017-11-10 16:38:12
【问题描述】:
我有一个嵌套回收器视图并在嵌套回收器中实现了OnClickListener(),并在点击时替换片段。在第一个回收站的onBindViewHolder 中,我正在根据从服务器获得的数据设置新的适配器。
- 如果数据保持类型
Category设置类别适配器 - 如果数据保持类型
Item设置项适配器
这是我设置的代码
if (myCategoryList.size() > 0 && isCategory) {
categoryAdapter = new CategoryAdapter(myCategoryList);
holder.recyclerView.setAdapter(categoryAdapter);
isCategory = false;
} else {
if (myItemListOfList.size() > 0) {
if (myCategoryList.size() > 0) {
itemAdapter = new ItemAdapter(myItemListOfList.get(position - 1));
holder.recyclerView.setAdapter(itemAdapter);
} else {
itemAdapter = new ItemAdapter(myItemListOfList.get(position));
holder.recyclerView.setAdapter(itemAdapter);
}
}
}
当我运行程序时,一切正常。当我单击Category 类型的view 时,它也可以正常工作。但是当我点击view 类型为Item 时,它成功打开了下一个片段,当我按下返回按钮时,问题就出现了,它将我带到上面代码所在的上一个片段。然后if statement 没有执行,所以我在上面代码中代码为position - 1 的行上得到ArrayIndexOutOfBoundsException。
所以我想知道为什么在Item Fragment 的后按 if 语句没有执行以及为什么它在来自Category Fragment 的后按时执行。
isCategory 是全局变量,默认为 true。我也尝试在构造函数中将其设置为 true,但问题是一样的。
提前致谢。
【问题讨论】:
标签: java android android-fragments exception adapter