我的应用程序(A和B)中有一个带有两个标签的视图寻呼机。第一个选项卡,即A有一个列表视图。单击列表中的任何项目将打开一个新片段(让我们将其称为C)与另一个列表。选项卡B还有一个列表视图。
选项卡B中的列表和片段C中包含的列表具有相同类型的项目。也就是说,两个列表中的每个项目都属于同一个类。我使用带有自定义适配器的回收器视图来创建列表。由于选项卡B和片段c中的两个列表具有相同的对象类型,因此我使用了相同的适配器,即(CarListAdapter.class)。
我面临的问题是当我打开片段C然后返回选项卡A然后右键滑动以便选项卡B可见,单击选项卡B中的项目会导致空指针异常,原因是列表中的片段CarListFragment.class仍然具有片段C而不是制表符B的数据。(但是列表正确呈现,只是点击不能正常工作)
由于此适配器的两个实例存在,我希望这可以正常工作。但是,如果我使用具有完全相同代码的两个不同的适配器(如CarListAdapterC.class和CarListAdapterB.class),则代码可以正常工作。
我被困了,有人可以解释为什么会这样吗?
答案 0 :(得分:2)
使用视图寻呼机和回收站视图时遇到同样的问题。我搜索了分配,因为我知道这是 recycler view adapte r中的一个问题。
您可能知道查看分页器每次显示页面时默认加载下一页。这里是适配器显示问题的位置。您创建的同一个适配器的不同实例指向因为它还有其他页面项目。
我知道这不是一个好主意但是我创建了另一个与第一个具有不同名称的适配器相同的适配器并将其用于下一个列表并且它work.try来分隔列表的adapter.let我知道它是否有效。< / p>
答案 1 :(得分:-1)
我终于找到了解决方案,这对我来说真是太愚蠢了。我在RecyclerView Adapter中有静态字段。删除它们就像一个魅力。