android - Using SuperSLiM Library in nested RecyclerView -
i use superslim library github
need use library in nested recyclerview, when put recyclerview stick's it's header on top, in recyclerview, seems misses it's properties. adapter root recyclerview in each row of have recyclerview , textview.
public class adapter extends recyclerview.adapter<adapter.viewholder> { private context mcontext; private layoutinflater mlayoutinflater; public adapter(context context) { this.mcontext = context; this.mlayoutinflater = layoutinflater.from(context); } @override public viewholder oncreateviewholder(viewgroup viewgroup, int viewtype) { view view = mlayoutinflater.inflate(r.layout.row, viewgroup, false); viewholder viewholder = new viewholder(view); return viewholder; } @override public void onbindviewholder(viewholder viewholder, int position) { // recyclerview mrecyclerview = viewholder.mrecyclerview; textview mtextview = viewholder.mtextview; // mtextview.settext("pos: " + position); //set layoutmanager mrecyclerview.setlayoutmanager(new nestedlinearlayoutmanager(mcontext)); //set adapter countrynamesadapter adapter = new countrynamesadapter(mcontext, 18); adapter.setmarginsfixed(true); adapter.setheaderdisplay(18); mrecyclerview.setadapter(adapter); } @override public int getitemcount() { return 10; } class viewholder extends recyclerview.viewholder { textview mtextview; recyclerview mrecyclerview; public viewholder(view itemview) { super(itemview); mtextview = (textview) itemview.findviewbyid(r.id.title); mrecyclerview = (recyclerview) itemview.findviewbyid(r.id.list); } } this nestedlinearlayoutmanager class showing child recyclerview nice.
public class nestedlinearlayoutmanager extends linearlayoutmanager { public nestedlinearlayoutmanager(context context){ super(context); } public nestedlinearlayoutmanager(context context, int orientation, boolean reverselayout) { super(context, orientation, reverselayout); } private int[] mmeasureddimension = new int[2]; @override public void onmeasure(recyclerview.recycler recycler, recyclerview.state state, int widthspec, int heightspec) { final int widthmode = view.measurespec.getmode(widthspec); final int heightmode = view.measurespec.getmode(heightspec); final int widthsize = view.measurespec.getsize(widthspec); final int heightsize = view.measurespec.getsize(heightspec); int width = 0; int height = 0; (int = 0; < getitemcount(); i++) { measurescrapchild(recycler, i, view.measurespec.makemeasurespec(i, view.measurespec.unspecified), view.measurespec.makemeasurespec(i, view.measurespec.unspecified), mmeasureddimension); if (getorientation() == horizontal) { width = width + mmeasureddimension[0]; if (i == 0) { height = mmeasureddimension[1]; } } else { height = height + mmeasureddimension[1]; if (i == 0) { width = mmeasureddimension[0]; } } } switch (widthmode) { case view.measurespec.exactly: width = widthsize; case view.measurespec.at_most: case view.measurespec.unspecified: } switch (heightmode) { case view.measurespec.exactly: height = heightsize; case view.measurespec.at_most: case view.measurespec.unspecified: } setmeasureddimension(width, height); } private void measurescrapchild(recyclerview.recycler recycler, int position, int widthspec, int heightspec, int[] measureddimension) { view view = recycler.getviewforposition(position); if (view != null) { recyclerview.layoutparams p = (recyclerview.layoutparams) view.getlayoutparams(); int childwidthspec = viewgroup.getchildmeasurespec(widthspec, getpaddingleft() + getpaddingright(), p.width); int childheightspec = viewgroup.getchildmeasurespec(heightspec, getpaddingtop() + getpaddingbottom(), p.height); view.measure(childwidthspec, childheightspec); measureddimension[0] = view.getmeasuredwidth() + p.leftmargin + p.rightmargin; measureddimension[1] = view.getmeasuredheight() + p.bottommargin + p.topmargin; recycler.recycleview(view); } } } does library work in nested recyclerview too?
Comments
Post a Comment