android - RecyclerView With Multiple Layouts -
i using recyclerview display text in cardview want add header textview @ top of recyclerview looks this:

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:
recyclerviewheader- super simple use, uses bit "hacky" approach, can cause problems. suitable relatively simple headers.headerrecyclerview- suitable type of header. implements approach mentioned commonsware inflate 2 types of views. bit more difficult userecyclerviewheadernothing 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
Post a Comment