Android Comment savoir quelle case à cocher est sélectionnée

Je suis en train de faire ma première application Android et je vais avoir un problème pour lequel je ne trouve la réponse nulle part sur Google.

Je veux une liste d'articles avec des cases à cocher. Je veux à la fois l'élément lui-même et la case à cocher pour être cliquable.

    public class MyItem extends ListActivity {
        private ArrayList<MyItem> items;
        public void onCreate(Bundle savedInstanceState) {
            /* code which creates instances of MyItem and inserts them on the *list* variable */
        MyArrayAdapter adapter = new MyArrayAdapter(this, R.layout.my_item, list);

        setListAdapater(adapter);
        setContentView(R.layout.items_list);
    }
        public onListItemClick(ListView l, View v, int position, long id){
            //handles the click on an item
        }

    public class MyArrayAdapter extends ArrayAdapter<MyItem>{
        private MyItem item;
        public MyArrayAdapter(Context context, int resourceId, ArrayList<MyItem> list){
            //code for the constructor
        }
        public getView(int position, View convertView, ViewGroup parent){
            convertView = inflater.inflate(resourceId, null);


            this.item = list.get(position);
            if (this.item == null) {
                return convertView;
            }
            else{
                if (resourceId == R.layout.my_item) {
                    final CheckBox cb = (CheckBox)convertView.findViewById(R.id.checkbox);

                    if(cb != null){
                        //initially
                        if(chosen)
                            cb.setChecked(true);
                        else
                            cb.setChecked(false);
                        //set listener
                        cb.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View arg0) {
                                if(cb.isChecked())
                                    chosen = true;
                                else
                                    chosen = false;
                            }
                        });
                    }
                }
            return convertView;
        }
    }    
}

Ne vous inquiétez pas sur le choisi variable. J'ai écrit que de simplement le code. Il fait correspond à une valeur dans une base de données. La en cliquant sur un élément qui fonctionne très bien. Cependant lorsque je clique sur une case à cocher ce qui se passe est: est-ce

  • la case dans laquelle j'ai cliqué apparaît sélectionnée (c'est le travail de l'Android UI)
  • la case que l'interne est vérifié, c'est le dernier sur l'écran quoi qu'il en soit, c'est à dire, si j'ai mon écran affiche 8 éléments et que je clique dans l'un d'eux (n'importe laquelle) le contrôle apparaît dans la bonne case, mais en interne, le 8e élément est celui de se faire contrôler.

Je vous serais reconnaissant de toute aide que vous pourriez me fournir. Merci à l'avance.

OriginalL'auteur Inês | 2011-08-15