android - list view click gets the wrong item -
i have list view inflated adapter. when click on 1 of buttons wrong item. used work o.k until added whatsapp
button.
this adapter:
public class shawarmaddapter extends arrayadapter<shawarma> { string nname; double lat,lon; public shawarmaddapter(context context, list<shawarma> resource) { super(context,0, resource); } @override public view getview(int position, view convertview, viewgroup parent) { .... if (convertview==null) { convertview= layoutinflater.from(getcontext()).inflate(r.layout.shawarmaddapter,parent,false); } .... waze= (imagebutton)convertview.findviewbyid(r.id.adapterwazebtn); whats = (imagebutton)convertview.findviewbyid(r.id.whats); locname=name.gettext().tostring(); .... nname = sh1.getname(); name.settext(sh1.getname()); .... if (sh1.getparking()==1) park.setchecked(true); else park.setchecked(false); rate.setrating((float) sh1.getrank()); rate.setisindicator(true); listener lis = new listener(); waze.setonclicklistener(lis); whats.setonclicklistener(lis); lat= sh1.getlat(); lon= sh1.getlon(); return convertview; }
there onclicklistener added in code thats supposed check location if waze button pressed or name if whatsapp button pressed. code
class listener implements view.onclicklistener{ @override public void onclick(view v) { switch (v.getid()) { case r.id.adapterwazebtn: log.i("a7", "button clicked"); // log.i("a7", lat+" lat, "+lon+" lon"+ "distance: "+ sh1.getdistance()); try { string url = "waze://?ll="+lat+","+lon+"&navigate=yes"; intent intent = new intent( intent.action_view, uri.parse( url ) ); shawarmalist.con. startactivity( intent ); } catch ( activitynotfoundexception ex ) { intent intent = new intent( intent.action_view, uri.parse( "market://details?id=com.waze" ) ); shawarmalist.con.startactivity(intent); } catch (exception ex) { log.i("a7",ex.tostring()); } break; case r.id.whats: intent sendintent = new intent(); sendintent.setaction(intent.action_send); sendintent.putextra(intent.extra_text, "do want join me "+nname+"?"); sendintent.settype("text/plain"); try { toast.maketext(shawarmalist.con.getapplicationcontext(),nname,toast.length_short).show(); shawarmalist.con.startactivity(sendintent); } catch (exception e) { log.i("a7",e.getmessage()); } break; } } }
how can change right item?
you can try way
package com.example.listview; import java.util.arraylist; import android.os.bundle; import android.app.activity; import android.content.clipdata.item; import android.view.menu; import android.view.view; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.arrayadapter; import android.widget.listview; import android.widget.toast; public class mainactivity extends activity { listview list; arraylist<string> data; arrayadapter<string> adapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); list=(listview)findviewbyid(r.id.listview1); data=new arraylist<string>(); data.add("list item 1"); data.add("list item 2"); data.add("list item 3"); data.add("list item 4"); adapter=new arrayadapter<string>(getapplicationcontext(),android.r.layout.simple_list_item_1,data); list.setadapter(adapter); list.setonitemclicklistener(new onitemclicklistener() { @override public void onitemclick(adapterview<?> arg0, view arg1, int arg2, long arg3) { string s= integer.tostring(arg2) ; //here arg2 selects list item toast.maketext(getapplicationcontext(), s, toast.length_short).show(); // todo auto-generated method stub } }); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); return true; } }
Comments
Post a Comment