android - Giving more spacing between 3 and 4 row item in Recycler GridLayoutManager -
i using recyclerview gridlayoutmanager layout bus ticket booking. works fine except place stuck logics have use leave more spacing between 3 , 4 column item in rows. layout should screenshot attached below.
my requirement:
current output:
i posting complete recyclerview gridlayoutmanager reference follows
multiselectrecyclerviewadapter.java
public class multiselectrecyclerviewadapter extends selectableadapter<multiselectrecyclerviewadapter.viewholder> { private arraylist<string> marraylist; private context mcontext; private viewholder.clicklistener clicklistener; public multiselectrecyclerviewadapter (context context, arraylist<string> arraylist,viewholder.clicklistener clicklistener) { this.marraylist = arraylist; this.mcontext = context; this.clicklistener = clicklistener; } // create new views @override public multiselectrecyclerviewadapter.viewholder oncreateviewholder(viewgroup parent, int viewtype) { view itemlayoutview = layoutinflater.from(parent.getcontext()).inflate( r.layout.row_multiselect, null); viewholder viewholder = new viewholder(itemlayoutview,clicklistener); return viewholder; } @override public void onbindviewholder(viewholder viewholder, int position) { viewholder.tvname.settext(marraylist.get (position)); viewholder.selectedoverlay.setvisibility(isselected(position) ? view.visible : view.invisible); } @override public int getitemcount() { return marraylist.size(); } public static class viewholder extends recyclerview.viewholder implements view.onclicklistener,view.onlongclicklistener { public textview tvname; private clicklistener listener; private final view selectedoverlay; public viewholder(view itemlayoutview,clicklistener listener) { super(itemlayoutview); this.listener = listener; tvname = (textview) itemlayoutview.findviewbyid(r.id.tvname); selectedoverlay = (view) itemview.findviewbyid(r.id.selected_overlay); itemlayoutview.setonclicklistener(this); itemlayoutview.setonlongclicklistener (this); } @override public void onclick(view v) { if (listener != null) { listener.onitemclicked(getadapterposition ()); } } @override public boolean onlongclick (view view) { if (listener != null) { return listener.onitemlongclicked(getadapterposition ()); } return false; } public interface clicklistener { public void onitemclicked(int position); public boolean onitemlongclicked(int position); } } } multiselectrecyclerviewactivity.java
public class multiselectrecyclerviewactivity extends appcompatactivity implements multiselectrecyclerviewadapter.viewholder.clicklistener { private toolbar toolbar; private recyclerview mrecyclerview; private multiselectrecyclerviewadapter madapter; private recyclerview.layoutmanager mlayoutmanager; private arraylist<string> marraylist = new arraylist<string>(); @override protected void oncreate(bundle savedinstancestate) { super.oncreate (savedinstancestate); setcontentview(r.layout.activity_multiselect); toolbar = (toolbar) findviewbyid(r.id.toolbar); (int = 1; <= 48; i++) { marraylist.add ( ""+ i); } if (toolbar != null) { setsupportactionbar(toolbar); getsupportactionbar().settitle("multiselectrecylcerview"); } mrecyclerview = (recyclerview) findviewbyid(r.id.my_recycler_view); mrecyclerview.sethasfixedsize(true); mrecyclerview.setlayoutmanager(new gridlayoutmanager (this,4)); madapter = new multiselectrecyclerviewadapter (multiselectrecyclerviewactivity.this,marraylist,this); mrecyclerview.setadapter (madapter); } @override public void onitemclicked (int position) { toggleselection(position); } @override public boolean onitemlongclicked (int position) { toggleselection(position); return true; } private void toggleselection(int position) { madapter.toggleselection (position); } } what have tried in coding:
i have followed gist assign spacing grid items using itemdecoration below. unfortunately able assign spacing equally between items.
mrecyclerview.setlayoutmanager(new gridlayoutmanager(context, num_columns); itemoffsetdecoration itemdecoration = new itemoffsetdecoration(context, r.dimen.item_offset); mrecyclerview.additemdecoration(itemdecoration); kindly please me kind of tips , solutions solve case. stuck how proceed requirement , logic using recyclerview considered should optimized approach. in advance.
using item decoration here create problems. if planning handle click on item, clicking on blank space interpreted click on items located in inner columns.
you can configure gridlayoutmanager handling 1 more column , handle space specific view type. here put code implementing approach.
hope help.


Comments
Post a Comment