android - how to display position based image for following code? -
i have following code. when click on image in grid view particular image should display in activity. how can that?
this activity class::
public class productsactivity extends activity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.grid_view); gridview gridview = (gridview) findviewbyid(r.id.gridview); gridview.setadapter(new myadapter(this)); gridview.setonitemclicklistener(new adapterview.onitemclicklistener() { public void onitemclick(adapterview<?> parent, view v, int position, long id) { // 'mactivity' parameter activity object, can send current activity. intent = new intent(getapplicationcontext(), mobiledisplayactivity.class); i.putextra("positionid",position); startactivity(i); } }); }
how can change adapter class achieve requirement. ithink problem in getview()
.
this adapter class: private class myadapter extends baseadapter { private list<item> items = new arraylist<item>(); private layoutinflater inflater; public myadapter(context context) { inflater = layoutinflater.from(context); items.add(new item("image 1", r.drawable.ic_image4)); items.add(new item("image 2", r.drawable.ic_image5)); items.add(new item("image 3", r.drawable.ic_image4)); items.add(new item("image 4", r.drawable.ic_image5)); items.add(new item("image 5", r.drawable.ic_image4)); } @override public int getcount() { return items.size(); } @override public object getitem(int i) { return items.get(i); } @override public long getitemid(int i) { return items.get(i).drawableid; } @override public view getview(int i, view view, viewgroup viewgroup) { view v = view; imageview picture; textview name; if(v == null) { v = inflater.inflate(r.layout.row_grid, viewgroup, false); v.settag(r.id.picture, v.findviewbyid(r.id.picture)); v.settag(r.id.text, v.findviewbyid(r.id.text)); } picture = (imageview)v.gettag(r.id.picture); name = (textview)v.gettag(r.id.text); item item = (item)getitem(i); picture.setimageresource(item.drawableid); name.settext(item.name); return v; } private class item { final string name; final int drawableid; item(string name, int drawableid) { this.name = name; this.drawableid = drawableid; } } }
}
rather sending position of item next activity, send id or drawables (which integer).
do way
public void onitemclick(adapterview<?> parent, view v, int position, long id) { // 'mactivity' parameter activity object, can send current activity. int imageid = ((item) parent.getitematposition(position)).drawableid; intent = new intent(getapplicationcontext(), mobiledisplayactivity.class); i.putextra("imageid", imageid); startactivity(i); }
in mobiledisplayactivity
activity simple this
int imageid = getintent().getintextra("imageid", 0); if(imageid > 0) imageview.setbackgroundresource(imageid); else // went wrong
note: make item
class public static or define independently.
Comments
Post a Comment