i'm making android app, , have listview database json parsing. , want onclick item in listview open other activity, have no problem open new activity when item clicked. problem how don know item clicked , show item detail new activity.
public class items extends baseactivity { private progressdialog pdialog; private arraylist<rowitem> rowitems = new arraylist<rowitem>(); private listview mylistview; private customlistadapter adapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_items); pdialog = new progressdialog(this); pdialog.setmessage("loading..."); pdialog.show(); response.listener<string> responselistener = new response.listener<string>() { @override public void onresponse(string response) { try { jsonobject jsonresponse = new jsonobject(response); boolean error = jsonresponse.getboolean("error"); system.out.println(jsonresponse.tostring()); if (error){ string errormessage = jsonresponse.getstring("message"); alertdialog.builder builder = new alertdialog.builder(items.this); builder.setmessage(errormessage) .setnegativebutton("retry", null) .create() .show(); }else { jsonarray itemset = jsonresponse.getjsonarray("itemset"); (int = 0; < itemset.length(); i++){ jsonobject item = itemset.getjsonobject(i); string title = item.getstring("title"); string seller = item.getstring("nickname"); string price = item.getstring("price"); string itemid = item.getstring("itemid"); string image_view = item.getstring("picpath"); string path; jsonarray pic = item.getjsonarray("picpath"); if (pic.length()==0) { path="uploads/default.jpg"; }else { path = pic.getstring(0); } rowitem row=new rowitem(title,seller,price,image_view,path,itemid); rowitems.add(row); } mylistview = (listview) findviewbyid(r.id.list); customlistadapter adapter = new customlistadapter(items.this, rowitems); system.out.println(rowitems.isempty()); mylistview.setadapter(adapter); mylistview.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { intent intent = new intent(items.this, itemdetail.class); string title = ((textview) view.findviewbyid(r.id.tv_title)).gettext().tostring(); string seller = ((textview) view.findviewbyid(r.id.tv_seller)).gettext().tostring(); string price = ((textview) view.findviewbyid(r.id.tv_price)).gettext().tostring(); intent.putextra("title", title); intent.putextra("nickname", seller); intent.putextra("price", price); startactivity(intent); } }); } }catch (jsonexception e){ e.printstacktrace(); } } }; intent intent = getintent(); arraylist<string> list =intent.getstringarraylistextra("userinfo"); system.out.println(list.tostring()); itemrequest itemrequest = new itemrequest(list.get(0),list.get(1),responselistener); requestqueue queue = volley.newrequestqueue(items.this); queue.add(itemrequest); pdialog.dismiss(); } }
i use adapter
public class customlistadapter extends baseadapter { private context context; private list<rowitem> rowitems; private layoutinflater inflater = null; public static final string image_baseurl = "http://xxxxxxxxxxxxxxxxxxxxxxxx/"; private lrucache<integer, bitmap> imagecache; private requestqueue queue; public customlistadapter(context context, list<rowitem> rowitems){ this.context=context; this.rowitems=rowitems; inflater = layoutinflater.from(context); final int maxmemory = (int) (runtime.getruntime().maxmemory() / 1024); final int cachesize = maxmemory / 8; imagecache = new lrucache<>(cachesize); queue = volley.newrequestqueue(context); } @override public int getcount() { return rowitems.size(); } @override public object getitem(int position) { return rowitems.get(position); } @override public long getitemid(int position) { return rowitems.indexof(getitem(position)); } private class viewholder{ imageview imageview; textview tv_title; textview tv_seller; textview tv_price; } @override public view getview(int position, view convertview, viewgroup parent) { layoutinflater minflater = (layoutinflater) context.getsystemservice(activity.layout_inflater_service); final rowitem row_pos = rowitems.get(position); final viewholder holder; system.out.print("================================================================="); if (convertview==null){ convertview = minflater.inflate(r.layout.custom_layout, null); holder = new viewholder(); holder.tv_title = (textview) convertview.findviewbyid(r.id.tv_title); holder.tv_seller = (textview) convertview.findviewbyid(r.id.tv_seller); holder.tv_price = (textview) convertview.findviewbyid(r.id.tv_price); convertview.settag(holder); }else { holder = (viewholder) convertview.gettag(); } holder.tv_title.settext(row_pos.gettv_title().tostring()); holder.tv_seller.settext(row_pos.gettv_seller().tostring()); holder.tv_price.settext(row_pos.gettv_price().tostring()); bitmap bitmap = imagecache.get(integer.parseint(row_pos.getitemid())); holder.imageview = (imageview) convertview.findviewbyid(r.id.image_view); if (bitmap != null){ holder.imageview.setimagebitmap(bitmap); system.out.print("bitmap"); }else { string imageurl = image_baseurl + row_pos.getpath(); imagerequest request = new imagerequest(imageurl, new response.listener<bitmap>() { @override public void onresponse(bitmap response) { holder.imageview.setimagebitmap(response); imagecache.put(integer.parseint(row_pos.getitemid()), response); system.out.print(row_pos.getitemid()+"this image"); } }, 90, 90, bitmap.config.argb_8888, new response.errorlistener() { @override public void onerrorresponse(volleyerror error) { log.d("error", error.tostring()); } }); queue.add(request); } return convertview; } }
and how pass data grab database new activity? cannot display image form php. used volley library. this lisetview
if understand correctly, want transport data between 2 activities. can this:
//send data mylistview.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { //get item , transform jsonbean rowitem item= (rowitem) parent.getitematposition(position); intent intent = new intent(items.this, itemdetail.class); //put in intent,the item bean must implements serializable intent .putextra("rowitem",item) startactivity(intent); } //receive data (in activity of itemdetail) rowitem rowitem =(rowitem) getintent().getserializableextra("rowitem"); // rowitem,if want know position of item ,your alse can transport positon(put position in intent object).
Comments
Post a Comment