Android ListView with multiple select and custom adapter -


i have listview custom adapter. listview allows multiple select, somehow it's not recognising when item selected.

i've made adapter items extend checkable, still getcheckeditempositions()returns array of falses.

i guess there's fundamental i'm doing wrong, have been unable far find examples of multiple select listviews adapter not arrayadapter using default layout multiple selects.

any appreciated.

code below:

main class:

listview = (listview) findviewbyid(r.id.cardlist);  tca = new textcardadapter(minflater); listview.setadapter(tca); 

adapter:

public class textcardadapter extends baseadapter { private int count = 0; private list<checkablecard> cardlist = new arraylist<checkablecard>(); private layoutinflater minflater;  public textcardadapter(layoutinflater inflater) {     this.minflater = inflater; }  @override public int getcount() {     return count; }  @override public object getitem(int position) {     return cardlist.get(position); }  @override public long getitemid(int position) {     return position; }  @override public view getview(int position, view convertview, viewgroup parent) {     final viewholder holder;     if (convertview == null) {         convertview = minflater.inflate(r.layout.textlayout_row, null, false);         convertview.setclickable(true);          holder = new viewholder();         holder.text = (textview) convertview.findviewbyid(r.id.card_name);         holder.checkbox = (checkbox) convertview.findviewbyid(r.id.checkbox);         convertview.settag(holder);     } else {         holder = (viewholder) convertview.gettag();     }      final checkablecard card = cardlist.get(position);      holder.text.settext(card.card.tostring());     holder.checkbox.setchecked(card.ischecked());     holder.checkbox.setonclicklistener(card.checklistener);     convertview.setonclicklistener(new onclicklistener() {          @override         public void onclick(view v) {             card.checklistener.onclick(v);             holder.checkbox.setchecked(card.ischecked());         }     });      return convertview; }  public void add(card card) {     cardlist.add(new checkablecard(card));     count++;     notifydatasetchanged(); }  public void addall(collection<card> cardcoll) {     (card c : cardcoll)         add(c); }  public void removeall() {     count = 0;     cardlist.clear();     notifydatasetchanged(); }  public card getcard(int position) {     checkablecard cc = (checkablecard) getitem(position);     if (cc == null) return null;     return cc.card; }  public class checkablecard implements checkable {     private boolean checked = false;     public final card card;     public final onclicklistener checklistener;      public checkablecard(card card) {         this.card = card;         checklistener = new onclicklistener() {              @override             public void onclick(view v) {                 toggle();             }         };     }      @override     public boolean ischecked() {         return checked;     }      @override     public void setchecked(boolean checked) {         this.checked = checked;     }      @override     public void toggle() {         checked = !checked;     }  }  static class viewholder {     textview text;     checkbox checkbox; } } 

just have try:

  1. listview.setchoicemode(listview.choice_mode_multiple);

  2. holder.checkbox.setfocusable(false);

  3. i think listview's sub item view shoudld implements checkable interface, means converted view(convertview) should have method of checkable.


Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -