android - onClick of Image Button the value changes but repeat itself at 10 20 place -
i have 6 image buttons, onclick changes , from, repeats @ 10th 20th position. clueless, sure has getview f adapter. hence, posting code of adapter. appreciated.
public class listavailibilityadapter extends baseadapter { context context; int layoutresourceid; protected list<useravailibilitymodel> listavailibility; layoutinflater inflater; public listavailibilityadapter(context context, list<useravailibilitymodel> listavailibility) { this.listavailibility = listavailibility; this.inflater = layoutinflater.from(context); this.context = context; } public int getcount() { if(listavailibility.size()<=0) return 1; log.d("size of array-->", string.valueof(listavailibility.size())); return listavailibility.size(); } public useravailibilitymodel getitem(int position) { return listavailibility.get(position); } /* public list<useravailibilitymodel> getlist(int position) { return listavailibility; }*/ @override public long getitemid(int position) { // todo auto-generated method stub return listavailibility.get(position).getimagemorning(); } public view getview(int position, view convertview, viewgroup parent) { viewholder holder; view vi = convertview; if (convertview == null) { holder = new viewholder(); convertview = this.inflater.inflate(r.layout.layout_list_availability_item,parent, false); holder.txtdate = (textview) convertview.findviewbyid(r.id.lbl_date); holder.txtday = (textview) convertview.findviewbyid(r.id.lbl_day); holder.imgbtnmorning = (imagebutton) convertview.findviewbyid(r.id.img_btn_morning); holder.imgbtnafternoon = (imagebutton) convertview.findviewbyid(r.id.img_btn_afernoon); holder.imgbtnevening = (imagebutton) convertview.findviewbyid(r.id.img_btn_evening); holder.imgbtnmorningchecked = (imagebutton) convertview.findviewbyid(r.id.img_btn_morning_checked); holder.imgbtnafternoonchecked = (imagebutton) convertview.findviewbyid(r.id.img_btn_afernoon_checked); holder.imgbtneveningchecked = (imagebutton) convertview.findviewbyid(r.id.img_btn_evening_checked); holder.txtmorning = (textview) convertview.findviewbyid(r.id.txtmorning); holder.txtafternoon = (textview) convertview.findviewbyid(r.id.txtafernoon); holder.txteveing = (textview) convertview.findviewbyid(r.id.txtevening); holder.imgbtnmorningchecked.setvisibility(view.gone); holder.imgbtnafternoonchecked.setvisibility(view.gone); holder.imgbtneveningchecked.setvisibility(view.gone); convertview.settag(holder); } else { holder = (viewholder) convertview.gettag(); } if(listavailibility.size()<=0) { holder.txtdate.settext("no data"); holder.txtday.settext("no data"); } else{ useravailibilitymodel useravailmodel = listavailibility.get(position); holder.txtdate.settext(useravailmodel.getdisaplydate()); holder.txtday.settext(useravailmodel.getdisaplyday()); holder.imgbtnmorning.setimageresource(useravailmodel.getimagemorning()); holder.imgbtnafternoon.setimageresource(useravailmodel.getimageafternoon()); holder.imgbtnevening.setimageresource(useravailmodel.getimageevening()); final viewholder fianlholder = holder; final int finalposition = position; fianlholder.imgbtnmorning.setonclicklistener(new onclicklistener() { @override public void onclick(view convertview) { // if image source equals drawable then... // else change image source drawable... toast.maketext( context,"morning btn clicked"+finalposition,toast.length_short).show(); //if(((imagebutton)convertview).getdrawable()==drawablemorning){ fianlholder.imgbtnmorningchecked.setvisibility(view.visible); fianlholder.imgbtnmorningchecked.setimageresource(r.drawable.check); getitem(finalposition).setmornigbtnclick(true); //} } }); fianlholder.imgbtnmorningchecked.setonclicklistener(new onclicklistener() { @override public void onclick(view convertview) { // if image source equals drawable then... // else change image source drawable... toast.maketext( context,"morning btn checked clicked"+finalposition,toast.length_short).show(); //if(((imagebutton)convertview).getdrawable()==drawablecheck){ fianlholder.imgbtnmorningchecked.setvisibility(view.gone); fianlholder.imgbtnmorning.setvisibility(view.visible); fianlholder.imgbtnmorning.setimageresource(r.drawable.morning); getitem(finalposition).setmornigbtncheckclick(true); // } } }); fianlholder.imgbtnafternoon.setonclicklistener(new onclicklistener() { @override public void onclick(view convertview) { // if image source equals drawable then... // else change image source drawable... toast.maketext( context,"afternoon image clicked"+finalposition,toast.length_short).show(); //if(convertview.getid()==r.id.img_btn_afernoon){ fianlholder.imgbtnafternoonchecked.setvisibility(view.visible); //fianlholder.imgbtnafternoon.setvisibility(view.gone); fianlholder.imgbtnafternoonchecked.setimageresource(r.drawable.check); // } } }); fianlholder.imgbtnafternoonchecked.setonclicklistener(new onclicklistener() { @override public void onclick(view convertview) { // if image source equals drawable then... // else change image source drawable... toast.maketext( context,"afternoon btn checked clicked"+finalposition,toast.length_short).show(); //if(convertview.getid()==r.id.img_btn_afernoon_checked){ fianlholder.imgbtnafternoonchecked.setvisibility(view.gone); fianlholder.imgbtnafternoon.setvisibility(view.visible); fianlholder.imgbtnafternoon.setimageresource(r.drawable.afternoon); // } } }); fianlholder.imgbtnevening.setonclicklistener(new onclicklistener() { @override public void onclick(view convertview) { // if image source equals drawable then... // else change image source drawable... toast.maketext( context,"evening image clicked"+finalposition,toast.length_short).show(); //if(convertview.getid()==r.id.img_btn_evening){ fianlholder.imgbtneveningchecked.setvisibility(view.visible); // fianlholder.imgbtnevening.setvisibility(view.gone); fianlholder.imgbtneveningchecked.setimageresource(r.drawable.check); // } } }); fianlholder.imgbtneveningchecked.setonclicklistener(new onclicklistener() { @override public void onclick(view convertview) { // if image source equals drawable then... // else change image source drawable... toast.maketext( context,"eveing btn checked clicked"+finalposition,toast.length_short).show(); // if(convertview.getid()==r.id.img_btn_evening_checked){ fianlholder.imgbtneveningchecked.setvisibility(view.gone); fianlholder.imgbtnevening.setvisibility(view.visible); fianlholder.imgbtnevening.setimageresource(r.drawable.night); // } } }); } return convertview; } private static class viewholder { textview txtdate; textview txtday; imagebutton imgbtnmorning; imagebutton imgbtnafternoon; imagebutton imgbtnevening; imagebutton imgbtnmorningchecked; imagebutton imgbtnafternoonchecked; imagebutton imgbtneveningchecked; textview txtmorning; textview txtafternoon; textview txteveing; } }
i not clear on question or problem. seems have peculiar issues displaying data on listview correctly. try sample code in getview() in 1 of onclick():
fianlholder.imgbtnmorning.setonclicklistener(new onclicklistener() { @override public void onclick(view convertview) { ... imagebutton imgbtn = (imagebutton) convertview; imgbtn.setvisibility(view.visible); ... notifydatasetchanged(); ... notes:
- it safer use view parameter since view in focus/clicked. , think looks simpler , generic.
- typecast view appropriate class type. otherwise possible crash.
- perhaps important. call
notifydatasetchangedforces, normally, refresh listview if data impacted visible.
Comments
Post a Comment