当前位置: 首页 > 知识库问答 >
问题:

当调用RecyclerView适配器的“通知数据设置更改()”时,RecyclerView抛出“java.lang.Throwable: addInArray”

冷英光
2023-03-14

Activity中有一个RecyclerView,通过getGroupList()获取数据,这是一个异步方法。

public void getSelectGroupList() {
    getGroupList(getGroupList_listener);
}

private LogicTaskListener<UserGroupModel> getGroupList_listener = new     LogicTaskListener<UserGroupModel>() {
        @Override
        public void onResponse(UserGroupModel result) {
            loadingFinish();
            if (result.code == KoalaHttpStatus.OK) {
                mAdapter.setData(result.data.list);
            }
        }
    };

适配器,通过setData方法更新数据,当调用setData()notifyDataSetChanged()时,抛出java。语言:addInArray

public void setData(List<UserGroupBean> data) {
    this.data.clear();
    this.data.addAll(data);
    notifyDataSetChanged();
}

可丢弃信息:

addInArray被调用,这=android。支持v7.widget。RecyclerView{4295f4f0 VFED…..F…..ID 40218-1240780#7f0d00ca应用程序:ID/select\u group\u RecyclerView}调用堆栈=java。lang.Throwable:android的addInArray。看法视图组。android上的addInArray(ViewGroup.java:3786)。看法视图组。在android上添加ViewInner(ViewGroup.java:3740)。看法视图组。android上的addView(ViewGroup.java:3564)。看法视图组。android上的addView(ViewGroup.java:3509)。支持v7.widget。回收费5美元。android上的addView(RecyclerView.java:649)。支持v7.widget。儿童助手。android上的addView(ChildHelper.java:107)。支持v7.widget。RecyclerView$布局管理器。android上的addViewInt(RecyclerView.java:7112)。支持v7.widget。RecyclerView$布局管理器。android上的addView(RecyclerView.java:7070)。支持v7.widget。RecyclerView$布局管理器。android上的addView(RecyclerView.java:7058)。支持v7.widget。LinearLayoutManager。android上的layoutChunk(LinearLayoutManager.java:1428)。支持v7.widget。LinearLayoutManager。android上的fill(LinearLayoutManager.java:1377)。支持v7.widget。LinearLayoutManager。android上的onLayoutChildren(LinearLayoutManager.java:578)。支持v7.widget。回收视图。android上的dispatchLayoutStep2(RecyclerView.java:3315)。支持v7.widget。回收视图。android上的dispatchLayout(RecyclerView.java:3124)。支持v7.widget。回收视图。android上的onLayout(RecyclerView.java:3568)。看法看法android上的布局(View.java:15132)。看法视图组。android上的布局(ViewGroup.java:4862)。小装置。线性布局。android上的setChildFrame(LinearLayout.java:1888)。小装置。线性布局。android上的layoutVertical(LinearLayout.java:1742)。小装置。线性布局。android上的onLayout(LinearLayout.java:1651)。看法看法android上的布局(View.java:15132)。看法视图组。android上的布局(ViewGroup.java:4862)。小装置。框架布局。android上的layoutChildren(FrameLayout.java:515)。小装置。框架布局。android上的onLayout(FrameLayout.java:450)。看法看法android上的布局(View.java:15132)。看法视图组。android上的布局(ViewGroup.java:4862)。小装置。线性布局。android上的setChildFrame(LinearLayout.java:1888)。小装置。线性布局。android上的layoutVertical(LinearLayout.java:1742)。小装置。线性布局。android上的onLayout(LinearLayout.java:1651)。看法看法android上的布局(View.java:15132)。看法视图组。android上的布局(ViewGroup.java:4862)。小装置。框架布局。android上的layoutChildren(FrameLayout.java:515)。小装置。框架布局。android上的onLayout(FrameLayout.java:450)。看法看法android上的布局(View.java:15132)。看法视图组。android上的布局(ViewGroup.java:4862)。小装置。线性布局。android上的setChildFrame(LinearLayout.java:1888)。小装置。线性布局。android上的layoutVertical(LinearLayout.java:1742)。小装置。线性布局。android上的onLayout(LinearLayout.java:1651)。看法看法android上的布局(View.java:15132)。看法视图组。android上的布局(ViewGroup.java:4862)。小装置。框架布局。android上的layoutChildren(FrameLayout.java:515)。小装置。框架布局。android上的onLayout(FrameLayout.java:450)。看法看法android上的布局(View.java:15132)。看法视图组。android上的布局(ViewGroup.java:4862)。看法ViewRootImpl。在android上执行布局(ViewRootImpl.java:2317)。看法ViewRootImpl。在android上执行Traversals(ViewRootImpl.java:2023)。看法ViewRootImpl。android上的doTraversal(ViewRootImpl.java:1189)。看法ViewRootImpl$TraversalRunnable。在android上运行(ViewRootImpl.java:6223)。看法Choreographer$CallbackRecord。在android上运行(Choreographer.java:788)。看法编舞android上的doCallbacks(Choreographer.java:591)。看法编舞android上的doFrame(Choreographer.java:560)。看法Choreographer$FrameDisplayEventReceiver。在android上运行(Choreographer.java:774)。操作系统。处理程序。android上的handleCallback(Handler.java:808)。操作系统。处理程序。android上的dispatchMessage(Handler.java:103)。操作系统。活套。android上的loop(Looper.java:193)。应用程序。ActivityThread。java上的main(ActivityThread.java:5292)。lang.reflect。方法java上的invokenactive(本机方法)。lang.reflect。方法在com上调用(方法java:515)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。跑步(ZygoteInit.jav

共有2个答案

宋奇希
2023-03-14

只需确保您的适配器链接在您从片段或活动中分配列表之前已初始化

分配时的问题

 List<UserGroupBean> data = new ArrayList<>() ;  //adapter
危宜
2023-03-14

当RecyclerView的数据已更改且需要更新时,请使用RecyclerView的适配器notifyDataSetChanged()。

mAdapter.notifyDataSetChanged();
 类似资料:
  • 我为后台服务实现了一个AsyncTask来执行对数据库的查询,该查询速度非常快,不超过2-3秒。AsyncTask中的ProgressDialog有时很难检测到。 我的问题是,当任务完成并且我检索到游标时,当我将适配器设置到RecyclerView时,流程会冻结我的UI几秒钟,直到数据设置完毕。当我执行搜索(新查询,与获取所有行相同的过程,但行数较少),并替换光标以更新数据时,也会发生这种情况。

  • 我正在从数据库中获取数据并正确获取JSON。此外,当我在回收器视图上设置适配器时,除了在每个位置上设置相同的数据之外,一切似乎都很好,但是我得到了具有20个不同值的完整ArrayList。我不知道我在哪里搞砸了通知数据集更改,因为这是我第一次使用回收器视图。 我在一个活动中使用了一个片段,在代码中,我使用了Log语句(我使用了“#############”而不是Log#标记),这告诉我,当调用on

  • > 从创建的片段中更新,将新数据设置为adapter,然后调用;但没有奏效。 像其他人一样创建一个新适配器,它对他们起作用,但对我没有任何改变: 在中创建一个更新数据的方法,如下所示: 问题是gridView的布局如下所示: 然后我只是删除了并将作为父布局。

  • 试图弄清楚更新的适配器有什么问题。 在我得到一个新的产品列表后,我尝试: > 从创建的片段中更新,将新数据设置到adapter,然后调用;但没有奏效。 像其他人一样创建一个新适配器,它对他们有效,但对我没有任何改变: 在中创建一个更新数据的方法,如下所示: 然后每当我想要更新数据列表时,我就调用这个方法;但没有奏效。 检查是否可以以任何方式修改recyclerView,并且我尝试至少删除一个项目:

  • 本文向大家介绍Android RecyclerView适配器中的数据绑定,包括了Android RecyclerView适配器中的数据绑定的使用技巧和注意事项,需要的朋友参考一下 示例 也可以在RecyclerView适配器中使用数据绑定。 资料模型 XML布局 转接器类别            

  • 在中,我需要更改每个行列表中的,即在选择每个位置后才指定的行更改。 所有的事情都是正确的,但当滚动回收视图,所选行的位置会自动改变! 这是我的适配器类: 我在输出中看到的: 正如所看到的,我选择了第一行图标,但滚动RecyclerView后,选择的位置改变了。 然后尝试使用更改和在中的位置再次错误! 我也看到了这个解决方案:获取点击的项目及其在RecyclerView中的位置