首页 文章

当调用RecyclerView适配器的“notifyDataSetChanged()”时,RecyclerView抛出“java.lang.Throwable:addInArray”

提问于
浏览
1

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.lang.Throwable:addInArray

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

可投掷的信息:

已调用addInArray,这= android.support.v7.widget.RecyclerView {4295f4f0 VFED .... .F .... ID 40,218-1240,780#7f0d00ca app:id / select_group_recyclerview} call stack = java.lang.Throwable :android.view.View中的addInArray,android.view.addInArray(ViewGroup.java:3786),android.view.View中的android.view.addViewAdray(ViewGroup.java:3740) . 在android.support.v7.widget.vad.addView(ChildHelper.java:107)的android.support.v7.widget.RecyclerView $ 5.addView(RecyclerView.java:649)上查看.ViewGroup.addView(ViewGroup.java:3509) )在android.support.v7.widget.RecyclerView $ LayoutManager.addViewInt(RecyclerView.java:7112)的android.support.v7.widget.RecyclerView $ LayoutManager.addView(RecyclerView.java:7070)在android.support.v7 . 在Android.support.v7.widget.LinearLayoutManager.fill(LinearLayout)的android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1428)上的widget.RecyclerView $ LayoutManager.addView(RecyclerView.java:7058) Manager.java:1377)在Android.support.v7上的android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3315) .widget.RecyclerView.dispatchLayout(RecyclerView.java:3124)位于Android的android.view.View.layout(View.java:15132)的android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3568) . android.widget.Lineout.ayLayout.onLayout上android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)的android.widget.Linear.Layout.Loutout.onLayout.onLayout.alLayout.onLayout上的android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)的view.ViewGroup.layout(ViewGroup.java:4862) (LinearLayout.java:1651)位于android.view.Loutout.layoutChild的android.view.Viewout.Lout( . View.java:415)上的android.view.View.layout(View.java:15132)(FrameLayout.java: 515)在Android.w.动态视图中,在Android.view.View(例如,View.java:48632)的android.view.Loutout(ViewLayout.java:45032)处的android.widget.FrameLayout.onLayout(FrameLayout.java:450) . widg android.view.lay.andout上android.widget.LinearLayout.onLayout(LinearLayout.java:1651)的android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)的et.LinearLayout.setChildFrame(LinearLayout.java:1888) (View.java:15132)在Android.widget.FrameLayout.onLayout(FrameLayout.java)的android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)的android.view.ViewGroup.layout(ViewGroup.java:4862) 450)在Android.view.Loutout.setChildFrame(LinearLayout.java:1888)的android.view.View.layout(ViewGroup.java:4862)上的android.view.View.layout(View.java:15132) . widget.LinearLayout.layoutVertical(LinearLayout.java:1742)位于android.view.View.Viewout.layout的android.view.View.layout(View.java:15132)的android.widget.LinearLayout.onLayout(LinearLayout.java:1651) (ViewGroup.java:4862)android.widget.FrameLayout.layout中的android.widget.FrameLayout.layoutChildren(FrameLayout.java:515),android.view.layout(View.java):android.widget.FrameLayout.onLayout(FrameLayout.java:450) 15132)在android . 在Android.view.ViewRootImpl.doTraversal的android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2023)的android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2317)中查看.ViewGroup.layout(ViewGroup.java:4862) (ViewRootImpl.java:1189)在Android.view.ChoreIs上安装了android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:6223)的android.view.Choreographer $ CallbackRecord.run(Choreographer.java:788) Choreographer.java:591)在Android.view.Handler.handleCallback(Handler.java)的android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:774)的android.view.Choreographer.doFrame(Choreographer.java:560) :808)在Android.os.Handler.dispatchMessage(Handler.java:103)的android.app.Looper.loop(Looper.java:193)在android.app.ActivityThread.main(ActivityThread.java:5292)在java位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run的java.lang.reflect.Method.invoke(Method.java:515)中的.lang.reflect.Method.invokeNative(Native Method)(ZygoteIni) t.jav

1 回答

  • 2

    当RecyclerView的数据发生变化并需要更新时,请使用RecyclerView的适配器进行notifyDataSetChanged() .

    mAdapter.notifyDataSetChanged();
    

相关问题