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

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -