android - Insert an item into the inner RecyclerView adapter -
i have recyclerview
shows full-height recyclerview
s items. , need insert new item in inner recylerview
adapter. wrote method in adapter of top level recyclerview
:
public void notifyinneriteminserted(final int position, final int insertposition) { viewholder holder = (viewholder)mrecyclerview.findviewholderforadapterposition(position); if(holder != null) { day day = records.get(position); holder.madapter.clear(); holder.madapter.addall(day.getitems()); holder.madapter.notifyiteminserted(insertposition); } }
but doesn't work. , if try update whole item of top level: dayadapter.notifydataiteminserted(position);
doesn't work same. looks recyclerview
holds old drawable cache. below full code of top level adapter:
public class dayadapter extends recyclerview.adapter<dayadapter.viewholder> { private recyclerview mrecyclerview; public dayadapter(recyclerview recyclerview) { mrecyclerview = recyclerview; } @override public viewholder oncreateviewholder(viewgroup parent, final int viewtype) { context context = parent.getcontext(); layoutinflater inflater = layoutinflater.from(context); view view = inflater.inflate(r.layout.li_day, parent, false); return new viewholder(view); } @override public void onbindviewholder(viewholder holder, final int position) { final day day = records.get(position); list<record> items = day.mitems; if(items == null || items.size() == 0) { holder.mcontent.setvisibility(view.gone); } else { holder.mcontent.setvisibility(view.visible); holder.madapter.clear(); holder.madapter.addall(day.getitems()); holder.madapter.notifydatasetchanged(); } } public class viewholder extends recyclerview.viewholder { private recyclerview mcontent; private adapter madapter = new adapter(); public viewholder(final view itemview) { super(itemview); mcontent = (recyclerview) itemview.findviewbyid(r.id.rvcontent); mcontent.setnestedscrollingenabled(false); fullexpandedlistmanager lm = new fullexpandedlistmanager(mcontent.getcontext()); simpleitemdecoration decoration = new simpleitemdecoration(mcontent.getcontext(), simpleitemdecoration.vertical_list); mcontent.setlayoutmanager(lm); mcontent.additemdecoration(decoration); mcontent.setadapter(madapter); } } public static class day extends baseadapter.record<day> { private list<record> mitems; public list<record> getitems() { return mitems; } public day setitems(list<record> items) { mitems = items; return this; } } public void notifyinneriteminserted(final int position, final int insertposition) { viewholder holder = (viewholder)mrecyclerview.findviewholderforadapterposition(position); if(holder != null) { holder.madapter.notifyiteminserted(insertposition); } } }
what doing wrong? how fix solution?
Comments
Post a Comment