Bonjour,

je fais des ex6 pour apprendre à utiliser la LISTVIEW et afficher via ActivityResult et onActivityResult ce qui est saisie sur une autre interface.

Dans mon activity qui affiche le retour de saisie, je dois mettre a jour ma liste sur écran en affichant les données saisir dans une classe (ce qui se passe très bien) mais mettre en face de chaque nom une checkbox disant si oui ou non cette personne est sportive.

Je déclare mon MainActivity
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public class MainActivity extends AppCompatActivity {
 
    private ListView lstPersonnes;
    private ArrayAdapter<Personne> adpPersonne;
    private CheckBox chkSportif;
[...]
J'initialise cette calsse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
[...]
private void init() {
        // Init des valeurs
        lstPersonnes = (ListView) findViewById(R.id.lstPersonnes); // ma listeview dans mon layour
        chkSportif = findViewById(R.id.chkSportif); // mon CHECKBOX dans mon layout
        adpPersonne = new ArrayAdapter<Personne>(this, android.R.layout.simple_list_item_checked); // j'associe mon adapter avec ma liste 
        lstPersonnes.setAdapter(adpPersonne);
[...]
    }
Et j'écoute afin d'avoir le retour de la saisie et mettre à jour ma listeview
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == NOUVEAU) {
            if (resultCode == RESULT_OK) {
                String nom = data.getStringExtra("nom");
                String prenom = data.getStringExtra("prenom");
                int age = data.getIntExtra("age", 0);
                Boolean sportif = data.getBooleanExtra("sportif", false);
                Personne p = new Personne(nom, prenom, age, sportif);
                adpPersonne.add(p);
            } else {
                Toast.makeText(this, "L'utilisateur a annulé!", Toast.LENGTH_LONG).show();
            }
        }
    }
Tout cela marche, mais je ne vois pas comment mettre mes checkbox dans ma liste.
Si je comprend bien, il cela met mes donnés en ligne avec ma classe Personne (public class Personne implements Serializable {...]) ou j'ai dedans :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    @Override
    public String toString() {
        return this.Nom + " " + this.Prenom + " ("+ this.Age+" ans)" ;
    }
J'ai bien essayé d'ajouter juste après mon (adpPersonne.add(p)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
// Position lors de l'ajout
                int position = adpPersonne.getPosition(p);
// Test si mon objet p est sportif
                Boolean temp = false;
                if (p.isSportif())  temp = true;
// Check si oui
                lstPersonnes.setItemChecked(position,temp);
Mais quand j'aoute une seconde ligne, je perd ma case à cochée et elle redevient comme avant.


Qui pourrait m'aider ?
merci
yoyochon