onclicklistener - How to dynamically add listener to button on customAdapter in android -


i want increment/decrement count , update database when click on button. problem button on adapter, how should apply listener individual button , update count particular user on ui in database.

enter image description here

what have achieved: above image shows have created. www, aaa, xxx users , when click on + or - button want increment count , update in database. below code have done:

admin_dashbord.java activity class

public class admin_dashbord extends activity  {     //textview a_shop_key,a_shop_name,a_shop_owner,a_shop_ophone,a_shop_address1,a_shop_address2,a_shop_address3,a_e_names;     string key,name,owner,ownerphone,address1,address2,address3,empnames,n_emp1,txtname="",getdata;     int n_emp;     button submit;     textview txtv_shopname;     linearlayout linear;     customer_adapter custom;     //arraylist<no_of_emp_pojo> getdata;      arraylist<no_of_emp_pojo> newdata=new arraylist<no_of_emp_pojo>();     arraylist<no_of_emp_pojo> temp=new arraylist<no_of_emp_pojo>();     network_class net=new network_class();     listview li;     @override     protected void oncreate(bundle savedinstancestate)      {         super.oncreate(savedinstancestate);         setcontentview(r.layout.admin_dashbord);          linear=(linearlayout)findviewbyid(r.id.admin_dashbord_layout2);         submit=(button)findviewbyid(r.id.dashbord_shop_submit);         li=(listview)findviewbyid(r.id.emp_list);         txtv_shopname=(textview)findviewbyid(r.id.shopname);           intent intent=getintent();         bundle b=intent.getextras();         key=b.getstring("shop_id");         name=b.getstring("shop_name");         owner=b.getstring("owner_name");         ownerphone=b.getstring("owner_phone");         address1=b.getstring("address1");         address2=b.getstring("address2");         address3=b.getstring("address3");         //empnames=b.getstring("emp_names");         n_emp1=b.getstring("n_emp");         n_emp=integer.parseint(b.getstring("n_emp"));          txtv_shopname.settext(name);            newdata=getdetail(key);         system.out.println("this admin dashboard");         custom=new customer_adapter(getapplicationcontext(), r.layout.shop_listview_item, newdata);         li.setadapter(custom);         //newdata.clear();         custom.notifydatasetchanged();      }        public arraylist<no_of_emp_pojo> getdetail(final string key)     {         thread th=new thread(new runnable()          {             @override             public void run()              {                 getdata=net.n_employees(key);                 system.out.println("in thread first");                 temp = no_emp(getdata);             }         });          th.start();         try         {             th.join();         }         catch(exception e)         {             system.out.println("thread jpoin problem "+e.getmessage());          }          return temp;     }      public arraylist<no_of_emp_pojo> no_emp(string result)     {         arraylist<no_of_emp_pojo> emp=new arraylist<no_of_emp_pojo>();         try         {             jsonarray j_array=new jsonarray(result);             for(int i=0; i<j_array.length(); i++)             {                 jsonobject j_object=j_array.getjsonobject(i);                 no_of_emp_pojo no=new no_of_emp_pojo();                  no.setid(j_object.getint("emp_id"));                 no.setcount(j_object.getint("count"));                 no.sete_name(j_object.getstring("emp_name"));                  emp.add(no);             }         }                catch(jsonexception e)             {                 log.e("log_tag", "error parsing in area......"+e.tostring());                                log.e("log_answers","second error parsing in area......"+result);             }         system.out.println("this parsing  "+emp.tostring());         return emp;     }  } 

customer_adapter.java

  public class customer_adapter extends arrayadapter<no_of_emp_pojo> {     private int res;     private layoutinflater inflaters;     button signal,increment,decrement;     public customer_adapter(context context, int resource, list<no_of_emp_pojo> objects)      {         super(context, resource, objects);         res=resource;         inflaters=layoutinflater.from(context);     }     @override     public view getview(int position, view convertview, viewgroup parent)      {         convertview=(linearlayout)inflaters.inflate(res, null);         textview count=(textview)convertview.findviewbyid(r.id.show_waiting);         textview name=(textview)convertview.findviewbyid(r.id.show_emp_name);         signal=(button)convertview.findviewbyid(r.id.green_signal);         increment=(button)convertview.findviewbyid(r.id.pluse_signal);         decrement=(button)convertview.findviewbyid(r.id.minus_signal);           count.settextcolor(color.parsecolor("#000000"));         name.settextcolor(color.parsecolor("#000000"));          no_of_emp_pojo no=getitem(position);         count.settext(integer.tostring(no.getcount()));         name.settext(no.gete_name());          increment.setonclicklistener(no.addlistner);         decrement.setonclicklistener(no.sublistner);          return convertview;     } } 

no_of_emp_pojo.java

  public class no_of_emp_pojo  {     int count,id;      public int getid() {         return id;     }     public void setid(int id) {         this.id = id;     }     string e_name;     public int getcount() {         return count;     }     public void setcount(int count) {         this.count = count;     }     public string gete_name() {         return e_name;     }     public void sete_name(string e_name) {         this.e_name = e_name;     }      public onclicklistener addlistner=new onclicklistener() {          @override         public void onclick(view v) {             // todo auto-generated method stub             system.out.println("add count "+ getid());          }     };      public onclicklistener sublistner=new onclicklistener()      {                @override         public void onclick(view v)          {             system.out.println("minus count "+getid());          }     };  } 

i surfed , found, wrote onclicklistener in no_of_emp_pojo class when click on button prints id not able update on ui in database because gives me listener in pojo on admin_dashbord.java activity become more easy update count on adapter value in database.

add click listener on button of item in getview: increment.setonclicklistener(this); decrement.setonclicklistener(this);

then add tag of object on these button in getview: increment.settag(no); // "no" cuttent object(mode) decrement.settag(no); // "no" cuttent object(mode)

now implement onclick method in adapter:

public void onclick(view v) {   switch(v.getid()) {      case r.id.pluse_signal:        no_of_emp_pojo selecteditem = (no_of_emp_pojo)v.gettag();        //now can update item in db or in place.        break;      case r.id.minus_signal:        no_of_emp_pojo selecteditem1 = (no_of_emp_pojo)v.gettag();        //now can update item in db or in place.        break; } } 

and click listnder called every item of listview. , can model related every item.


Comments