i trying checked value not showing value, have implemented custom adapter there not getting how update position
my code is..
public add_member_adapter(context a, arraylist<itemsmodel> d) { context = a; data = d; itemchecked = new boolean[data.size()]; inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); } public int getcount() { if (data.size() <= 0) return 1; return data.size(); } public final object getitem(int position) { return data.get(getcount() - position - 1); } public final long getitemid(int position) { return position; } public static class viewholder { public textview name, userid_fk; checkbox chkbox; } public view getview(final int position, view convertview, viewgroup parent) { log.d("getview:", "position=" + position); vi = convertview; final viewholder holder; if (convertview == null) { vi = inflater.inflate(r.layout.add_members_list_item, null); holder = new viewholder(); holder.name = (textview) vi.findviewbyid(r.id.name); holder.userid_fk = (textview) vi.findviewbyid(r.id.cusid_fk); holder.chkbox = (checkbox) vi.findviewbyid(r.id.chkbox); vi.settag(holder); } else { holder = (viewholder) vi.gettag(); } if (data.size() <= 0) { vi.setvisibility(view.gone); } else { tempvalues = null; tempvalues = (itemsmodel) data.get(position); holder.name.settext(tempvalues.getitemname().tostring()); holder.userid_fk.settext(tempvalues.getuserid_fk().tostring()); holder.chkbox.setchecked(false); holder.chkbox.setchecked(itemchecked[position]); holder.chkbox .setoncheckedchangelistener(new compoundbutton.oncheckedchangelistener() { @override public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) { itemchecked[position] = ischecked; } }); } return vi; } and declaring list setonitemclicklistener in activity
list.setonitemclicklistener(new onitemclicklistener() { public void onitemclick(adapterview<?> parent, view view, int position, long id) { checkbox checkbox = ((checkbox) view.findviewbyid(r.id.chkbox)); string name = list.getitematposition(position).tostring(); } });
any clickable view inside list view item steal list view onitemclicklistener click.
if want catch check event on check boxes, should use compoundbutton.oncheckedchangelistener instead of view.onclicklistener.
since convertview on listview re-useable, must aware data not accurate. must make data set hold values want keep.
this code adapter
public view getview(final int position, view convertview, viewgroup parent) { log.d("getview:", "position=" + position); vi = convertview; final viewholder holder; if (convertview == null) { vi = inflater.inflate(r.layout.add_members_list_item, null); holder = new viewholder(); holder.name = (textview) vi.findviewbyid(r.id.name); holder.userid_fk = (textview) vi.findviewbyid(r.id.cusid_fk); holder.chkbox = (checkbox) vi.findviewbyid(r.id.chkbox); vi.settag(holder); } else { holder = (viewholder) vi.gettag(); } if (data.size() <= 0) { vi.setvisibility(view.gone); } else { tempvalues = null; tempvalues = (itemsmodel) data.get(position); holder.name.settext(tempvalues.getitemname().tostring()); holder.userid_fk.settext(tempvalues.getuserid_fk().tostring()); holder.chkbox.setchecked(checkedholder[position]); holder.chkbox.setoncheckedchangelistener(new compoundbutton.oncheckedchangelistener() { @override public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) { checkedholder[position] = ischecked; } }); } return vi; } public boolean[] checkedholder; private void createcheckedholder() { checkedholder = new boolean[getcount()]; } call createcheckedholder on adapter's constructor. , if want checked value, can checkedholder
from checkedholder, can position of items selected user, can call below code activity
private arraylist<string> getselectednames(){ list<string> names = new arraylist<string>(); (int = 0; < adapter.getcount(); i++) { if(adapter.checkedholder[i]){ //get name values checked user names.get(i).add(yourdataset.getitemname().tostring()); } } return names }
Comments
Post a Comment