Friday 15 July 2011

android - how to update the textview text depending on the state of a checkbox in listview -



android - how to update the textview text depending on the state of a checkbox in listview -

here custom listviewadapter

public class listviewadapter extends baseadapter{ viewholder holder; public arraylist<hashmap<?, ?>>list; public arraylist<integer> add; activity activity; boolean [] checkeditems; string []ckboxtextadd; dbadapter db; /* * constructor calling */ public listviewadapter(activity activity,arraylist<hashmap<? , ?>>list) { // todo auto-generated constructor stub super(); this.activity=activity; this.list=list; add=new arraylist<integer>(list.size()); db=new dbadapter(activity); db.open(); checkeditems= new boolean[list.size()]; ckboxtextadd=new string[list.size()]; for(int i=0;i<list.size();i++) { checkeditems[i]=false; ckboxtextadd[i]="add"; } } @override public int getcount() { // todo auto-generated method stub homecoming list.size(); } @override public object getitem(int position) { // todo auto-generated method stub homecoming list.get(position); } @override public long getitemid(int position) { // todo auto-generated method stub homecoming 0; } @override public view getview(final int position, view convertview, viewgroup parent) { // todo auto-generated method stub layoutinflater layoutinflater=activity.getlayoutinflater(); final hashmap<?, ?> map=list.get(position); if(convertview==null) { convertview=layoutinflater.inflate(r.layout.l_view,parent,false); holder = new viewholder(); holder.title=(textview) convertview.findviewbyid(r.id.serving_size_grams); holder.servingsize=(textview) convertview.findviewbyid(r.id.tvprotiendesclabel); holder.fiber=(textview)convertview.findviewbyid(r.id.fiberview); holder.carbs=(textview)convertview.findviewbyid(r.id.carbsview); holder.sodium=(textview)convertview.findviewbyid(r.id.sodiumview); holder.proteins=(textview)convertview.findviewbyid(r.id.protienview); holder.calories=(textview)convertview.findviewbyid(r.id.caloriesview); holder.img_serve_size=(imageview)convertview.findviewbyid(r.id.image_serve_eqivalent); holder.calories_val=(textview)convertview.findviewbyid(r.id.cal_desc_val); holder.fiber_val=(textview)convertview.findviewbyid(r.id.fiber_desc_val); holder.sodium_val=(textview)convertview.findviewbyid(r.id.sodium_desc_val); holder.proteins_val=(textview)convertview.findviewbyid(r.id.prot_desc_val); holder.carbs_val=(textview)convertview.findviewbyid(r.id.carbs_desc_val); holder.tvbrand=(textview)convertview.findviewbyid(r.id.item_brand_name); holder.ckbox=(checkbox)convertview.findviewbyid(r.id.save_item_box); holder.tvckboxtext=(textview)convertview.findviewbyid(r.id.ckboxadd); convertview.settag(holder); } else { holder=(viewholder)convertview.gettag(); } holder.ckbox.setoncheckedchangelistener(null); holder.ckbox.setchecked(checkeditems[position]); holder.tvckboxtext.settext(ckboxtextadd[position]); holder.ckbox.settag(r.id.save_item_box, position); //on check box check events holder.ckbox.setoncheckedchangelistener(new compoundbutton.oncheckedchangelistener() { @override public void oncheckedchanged(final compoundbutton buttonview, boolean ischecked) { // todo auto-generated method stub final int position = (integer) buttonview .gettag(r.id.save_item_box); if (ischecked) { log.i(string.valueof(position), string.valueof(ischecked)); checkeditems[position] = true; ckboxtextadd[position]="added"; //holder.ckbox.settext(ckboxtextadd[position]); log.i("value of somple list", list.get(position).tostring()); log.i("value of listitr", list.get(position).tostring()); log.i("value of text box",ckboxtextadd[position]); final hashmap<?, ?> map=list.get(position); map.get(constants.nf_calories); string item_name =map.get(constants.item_name).tostring().replace('\'', ' '); string brand_name =map.get(constants.brand_name).tostring().replace('\'',' '); cursor cursor= db.fetch_data(item_name,brand_name); if(cursor.getcount()>0) { alertdialog.builder builder = new alertdialog.builder(activity); builder.setmessage("already saved") .setpositivebutton("replace", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int id) { checkeditems[position] = true; ckboxtextadd[position]="added"; log.i("value of text box trey",ckboxtextadd[position]); // holder.ckbox.settext(ckboxtextadd[position]); } }) .setnegativebutton("cancel", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int id) { checkeditems[position] = false; ckboxtextadd[position]="add"; log.i("value of text box false",ckboxtextadd[position]); //holder.ckbox.settext(ckboxtextadd[position]); } }); alertdialog alertdialog = builder.create(); alertdialog.show(); } else { log.i("value of calories",map.get(constants.nf_calories).tostring()); db.createsave( position ,brand_name ,item_name ,map.get("path").tostring() ,map.get(constants.nf_serving_size_qty).tostring() ,map.get(constants.nf_serving_size_unit).tostring() ,map.get(constants.nf_calories).tostring() ,map.get(constants.nf_proteins).tostring() ,map.get(constants.nf_sodium).tostring() ,map.get(constants.nf_total_fat).tostring() ,map.get(constants.nf_total_carbohydrates).tostring() ,map.get(constants.nf_saturated_fat).tostring() ,map.get(constants.nf_cholesterol).tostring() ,map.get(constants.nf_vitamin_a).tostring() ,map.get(constants.nf_vitamin_c).tostring() ,map.get(constants.nf_iron).tostring() ,map.get(constants.nf_calcium).tostring() ,map.get(constants.nf_serving_weight_grams).tostring() ); } } else { log.i(string.valueof(position), string.valueof(ischecked)); //buttonview.setchecked(false); //buttonview.settext("save"); ckboxtextadd[position]="add"; log.i("value of text box false",ckboxtextadd[position]); // holder.ckbox.settext(ckboxtextadd[position]); // holder.ckbox.settext("save"); // holder.ckbox.setbackgroundcolor(color.rgb(198, 228, 225)); checkeditems[position] = false; //holder.ckbox.settext(ckboxtextadd[position]); db.deleteunchecked(position); } } }); } homecoming convertview; } private class viewholder extends activity { textview title; textview servingsize; //textview status; textview carbs; textview proteins; textview calories; imageview img_serve_size; textview sodium; textview fiber; textview carbs_val; textview proteins_val; textview calories_val; textview sodium_val; textview fiber_val; checkbox ckbox; textview tvbrand; textview tvckboxtext; }

now wants update textview @ instant checkbox clicked in listview till doest not desired when scroll downwards , take alook on checked item textview updated

please help me in advance

istesd use

holder.ckbox.settext(checkeditems[position]?"added","add");

and remove

holder.tvckboxtext.settext(ckboxtextadd[position]?"added","add"););

this because might not back upwards landscape view

android listview listview-adapter

No comments:

Post a Comment