android - Custom listview using button OnClickListener -


i have created custom listview imageview, 2 textviews , button facing issue when try set onclicklistner button want different method done every button

here code customlistview class have used temporary onclicklistner button shows toast "bought" want after clicking button have return price of food.

class customlistview extends arrayadapter { public customlistview(context context, string[] resource) {     super(context,r.layout.custom_view , resource); } toast toast= null;   @override public view getview(int position, view convertview, viewgroup parent) {     layoutinflater myinflater = layoutinflater.from(getcontext());     view customview = myinflater.inflate(r.layout.custom_view, parent, false);     string singleitem= (string) getitem(position);     final textview text =(textview)customview.findviewbyid(r.id.itemname);     final imageview image= (imageview)customview.findviewbyid(r.id.icon);     final textview pricetag= (textview)customview.findviewbyid(r.id.pricetextview);     text.settext(singleitem);     switch (singleitem)     {         case "chicken":             image.setimageresource(r.drawable.desert1);             pricetag.settext("rs 300");             break;         case "soap":             image.setimageresource(r.drawable.desert2);             pricetag.settext("rs 300");             break;         case "fish":             image.setimageresource(r.drawable.fish);             pricetag.settext("rs 100");             break;         default:             image.setimageresource(r.drawable.myimage);             pricetag.settext("rs 0.00");             break;     }      final button buybutton= (button)customview.findviewbyid(r.id.buybutton);      toast = toast.maketext(getcontext(), "", toast.length_long);     buybutton.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             toast.settext("bought");             toast.show();          }     });      text.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {              toast.settext(text.gettext().tostring());             toast.show();          }     });     return customview;  } } 

for record, there should better way this, using food-id or other approach prevent this, based on request, here go:

1- in getview() when reference on button i.e:

final button buybutton= (button)customview.findviewbyid(r.id.buybutton); 

do 1 more step:

buybutton.settag(10); 

10 here other number, , need find way determine number use each button, string , ex value of singleitem

buybutton.settag(singleitem); 

2- @ onclick() need find out value assign view (button) , based on value call proper method:

@override public void onclick(view v) {     if (v.gettag().tostring().equals("xxxxx")){         dosomething();     }else if (v.gettag().tostring().equals("yyyy")){         doanotherthing();     }else if (v.gettag().tostring().equals("zzzzz")){         dosomething12();     }     //and on... } 

this approach used string value in settag() , gettag() if use integers, replace condition belwo:

if (integer.parseint(v.gettag().tostring()) == 10) 

edit:

if understand well, need to:

buybutton.settag(singleitem); 

and onclick():

@override public void onclick(view v) {     showpricetag(v.gettag().tostring()); } 

add method showpricetag():

public void showpricetag(string type){     switch (type)         {             case "chicken":                 //set price tag data ...                 break;             case "soap":                 //set price tag data ...                 break;             case "fish":                 //set price tag data ...                 break;             default:                 //set default price tag data ...                 break;         } } 

Comments