android - RecyclerView With Multiple Layouts -


i using recyclerview display text in cardview want add header textview @ top of recyclerview looks this:

enter image description here

so made layout file "top_header.xml" textview not sure how modify adapter both layouts in there.

public class adapter extends recyclerview.adapter<adapter.viewholder> {  list<adapterdata> mitems;  public adapter() {     super();     mitems = new arraylist<adapterdata>();     adapterdata data = new adapterdata();     data.setcode("dummytext");     data.setresult("dummytext");     mitems.add(data);      data = new adapterdata();     data.setcode("dummytext");     data.setresult("dummytext");     mitems.add(data);      data = new adapterdata();     data.setcode("dummytext");     data.setresult("dummytext");     mitems.add(data);      data = new adapterdata();     data.setcode("dummytext");     data.setresult("dummytext");     mitems.add(data);      data = new adapterdata();     data.setcode("dummytext");     data.setresult("dummytext");     mitems.add(data);  }  @override public int getitemviewtype(int position) {     int viewtype = 0;     return viewtype; }  @override public viewholder oncreateviewholder(viewgroup parent, int viewtype) {     if (viewtype == 0) {         return new viewholder(layoutinflater.from(parent.getcontext()).inflate(r.layout.top_textview, parent, false));     }      return new viewholder(layoutinflater.from(parent.getcontext()).inflate(r.layout.recycler_view_card_item, parent, false)); }  @override public void onbindviewholder(viewholder viewholder, int position) {     adapterdata data = mitems.get(position);     viewholder.code.settext(data.getcode());     viewholder.result.settext(data.getresult());  }   @override public int getitemcount() {     return mitems.size(); }   class viewholder1 extends recyclerview.viewholder{     public textview header;      public viewholder1(view itemview) {         super(itemview);         header = (textview)itemview.findviewbyid(r.id.header_textview);      } }  class viewholder2 extends recyclerview.viewholder{     public textview code;     public textview result;      public viewholder2(view itemview) {         super(itemview);         code = (textview)itemview.findviewbyid(r.id.sims_code);         result = (textview)itemview.findviewbyid(r.id.sims_result);      } }   } 

if want add multiple types of views (more 2 types) , not header , "normal" item, commonsware answer perfect. if 2 mentioned types (header , item) enough you, answer can lot simpler (from practical point of view).

there 2 relatively simple libraries can use that:

  1. recyclerviewheader - super simple use, uses bit "hacky" approach, can cause problems. suitable relatively simple headers.

  2. headerrecyclerview - suitable type of header. implements approach mentioned commonsware inflate 2 types of views. bit more difficult use recyclerviewheader nothing hard use on daily basis.

for disclosure: author of recyclerviewheader. i'm aware of flaws, therefore i'm not trying promote one-for-all solution, more interesting alternative complicating adapter. headerrecyclerview nice piece of code can simplify work. use myself when recyclerview header gets complicated.


Comments

Popular posts from this blog

javascript - Google App Script ContentService downloadAsFile not working -

javascript - Function overwritting -

php - Find a regex to take part of Email -