i have json converted model
arraylist<model> data
so want add header per type in json if there 2 different type in arraylist there 2 header in recyclerview , associated data list . current example have 2 typ2 - 1)name 2)value how can add 2 header in recyclerview , data having type name
json
{ "info": [ { "id": 12, "name": "hi", "type": "name" }, { "id": 1, "name": "hi1", "type": "name" }, { "id": 13, "name": "hi", "type": "value" }, { "id": 15, "name": "hi3", "type": "name" }, { "id": 16, "name": "hi", "type": "value" }, { "id": 20, "name": "hi5", "type": "value" }, { "id": 24, "name": "bye", "type": "name" }, { "id": 12, "name": "hi", "type": "name" } ]
i assume layout designs ready given image link. need 02 layout designs 1 header & footer in each item. now, can add header dynamically using adapter following:
public class yourrecyclerviewadapter extends recyclerview.adapter { private final int view_item_header = 1; // type: name/value private final int view_item_footer = 0; private list<pojomodel> mdata; private context mcontext; public yourrecyclerviewadapter(context context, list<pojomodel> data) { this.mcontext = context; this.mdata = data; } @override public recyclerview.viewholder oncreateviewholder(viewgroup parent, int viewtype) { recyclerview.viewholder viewholder; if (viewtype == view_item_header) { view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.item_header, parent, false); viewholder = new headerholder(view); } else { view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.item_footer, parent, false); viewholder = new footerholder(view); } return viewholder; } @override public void onbindviewholder(recyclerview.viewholder holder, int position) { pojomodel item = mdata.get(position); if (holder instanceof headerholder) { headerholder mholder = (headerholder)holder; // stuff } else { footerholder mholder = (footerholder)holder; // stuff } } @override public int getitemviewtype(int position) { return mdata.get(position) != null ? view_item_header : view_item_footer; } @override public int getitemcount() { return mdata.size(); } public class headerholder extends recyclerview.viewholder { public headerholder(view itemview) { super(itemview); // declare header views } } public class footerholder extends recyclerview.viewholder { public footerholder(view itemview) { super(itemview); // declare footer views } } }