2010-04-10 8 views
0

J'utilise un ListView avec CheckBox, mais comme la plupart d'entre vous le savez, lorsque vous faites défiler le défilement, CheckBox est cochée lorsque vous relancez le défilement. Donc, j'ai lu et j'ai découvert que vous pouvez passer (en utilisant getView) l'ID de la CB au paramètre de position de getView pour enregistrer l'état CheckBox!CheckBox a vérifié l'état dans un ListView

Mais je ne peux pas utiliser getView avec SimpleCursorAdapter, puis-je? Parce que j'utilise bindView!

Merci

+0

Êtes-vous juste demander que oui/non question sur SimpleCursorAdapter ou êtes-vous aussi demander comment utiliser un BaseAdapter? BaseAdapters sont beaucoup plus flexibles mais nécessitent un codage à utiliser. –

+0

Je demande s'il existe un moyen de rester avec SimpleCursorAdapter et parvient toujours à résoudre le problème! Sinon, je suis ouvert aux suggestions, merci –

Répondre

0

je réussi à obtenir l'état de case à cocher restaurée après i défiler vers le haut/bas à l'aide setViewBinder (vu dans une autre réponse):

mAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {    
     if(columnIndex==4) { 
      cb=(CheckBox)view; 
      cb.setChecked(cursor.getInt(4)==0? false:true); 
      return true; 
     } 
    return false; 
    } 
    }); 

Mais encore quelque chose de bizarre se produit, le CheckBox est d'être recyclé après 7 ou 8 positions. Si je vérifie le premier CheckBox et qu'il y a plus de 10 positions/lignes, le 8ème est également vérifié, même chose quand je vérifie le dernier, 8 positions là-bas seront vérifiées CheckBox.

Avez-vous des questions? Idéias? Aidez-moi!

1

Ce qui se passe est le recyclage. 7 lignes correspondent à votre écran et lorsque vous faites défiler vers le bas, le haut est en cours de recyclage pour le nouveau en bas. Ce que vous devez faire est de sauvegarder les états des cases à cocher.

Voici une bonne solution à un problème similaire:

https://github.com/commonsguy/cw-android/tree/master/FancyLists/RateList

Questions connexes