java - How to make one view bigger than the other views in RecyclerView? -
i have few images in json api, , managed fetch images using volley library. used recyclerview image adapter display image views vertically in 2 columns, want make 1 image big , display first image user can click on. image changed each interval of time. basically, api backend task setting time , telling image displayed on top of recyclerview if not images must have same size , shown in 2 columns vertically.
i have square layout class recyclerview. want know how can this. concept fine.
you have create 2 view 1 small item other header item , in onbindviewholder
have bind accordingly following code example of news article app , should help.
public class adapternewsarticleslistwithheader extends recyclerview.adapter<recyclerview.viewholder> { private list<newsarticles> items = new arraylist<>(); private context ctx; private newsarticles header; private static final int type_header = 0; private static final int type_item = 1; private onitemclicklistener monitemclicklistener; public interface onitemclicklistener { void onitemclick(view view, newsarticles obj, int position); } public void setonitemclicklistener(final onitemclicklistener mitemclicklistener) { this.monitemclicklistener = mitemclicklistener; } // provide suitable constructor (depends on kind of dataset) public adapternewsarticleslistwithheader(context context, newsarticles header, list<newsarticles> items) { this.items = items; this.header = header; ctx = context; } public class viewholder extends recyclerview.viewholder { // each data item string in case public textview title; public textview short_content; public textview date; public imageview image; public linearlayout lyt_parent; public viewholder(view v) { super(v); title = (textview) v.findviewbyid(r.id.title); short_content = (textview) v.findviewbyid(r.id.short_content); date = (textview) v.findviewbyid(r.id.date); image = (imageview) v.findviewbyid(r.id.image); lyt_parent = (linearlayout) v.findviewbyid(r.id.lyt_parent); } } class viewholderheader extends recyclerview.viewholder { public textview title; public textview date; public imageview image; public linearlayout lyt_parent; public viewholderheader(view v) { super(v); title = (textview) v.findviewbyid(r.id.title); date = (textview) v.findviewbyid(r.id.date); image = (imageview) v.findviewbyid(r.id.image); lyt_parent = (linearlayout) v.findviewbyid(r.id.lyt_parent); } } @override public recyclerview.viewholder oncreateviewholder(viewgroup parent, int viewtype) { if (viewtype == type_header) { view v = layoutinflater.from(parent.getcontext()).inflate(r.layout.row_header, parent, false); return new viewholderheader(v); } else if (viewtype == type_item) { view v = layoutinflater.from(parent.getcontext()).inflate(r.layout.row_news, parent, false); return new viewholder(v); } return null; } // replace contents of view (invoked layout manager) @override public void onbindviewholder(recyclerview.viewholder holder, final int position) { if (holder instanceof viewholderheader) { viewholderheader vheader = (viewholderheader) holder; vheader.title.settext(header.gettitle()); vheader.date.settext(header.getdate()); picasso.with(ctx).load(header.getimage()).into(vheader.image); vheader.lyt_parent.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { //todo: thing } }); } else if (holder instanceof viewholder) { final newsarticles c = items.get(position); viewholder vitem = (viewholder) holder; vitem.title.settext(c.gettitle()); vitem.short_content.settext(c.getshort_content()); vitem.date.settext(c.getdate()); picasso.with(ctx).load(c.getimage()).into(vitem.image); vitem.lyt_parent.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { //todo: thing } }); } } // need override method @override public int getitemviewtype(int position) { if (ispositionheader(position)) { return type_header; } return type_item; } private boolean ispositionheader(int position) { return position == 0; } public newsarticles getitem(int position) { return items.get(position); } // return size of dataset (invoked layout manager) @override public int getitemcount() { return items.size(); } }
Comments
Post a Comment