IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Récupérer des données depuis une listview


Sujet :

Composants graphiques Android

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut Récupérer des données depuis une listview
    Bonjour à tous,

    Je pense que cette question à déjà été abordé mais peut être pas de la manière dont je souhaite le faire.

    Mon application affiche une listview qui se remplie suivant un schéma que j'ai prédéfini dans un fichier xml.

    J'ai une image et 4 textView.

    Mon but est de récupérer les infos contenus dans plusieurs textView lorsque l'utilisateur sélectionne une ligne de la liste. (la ligne en question contient donc bien l'image et les 4 textView).

    Pour l'instant je parviens à voir quelle ligne est sélectionnée via arg2 mais je ne parviens pas à voir comment récupérer proprement les données contenues dans les textView de la listView en question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    list.setOnItemClickListener(new OnItemClickListener() {
     
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				// TODO Auto-generated method stub
    				Log.i(TAG, "POSITION:" + list.getItemIdAtPosition(arg2));
     
     
     
    			}
    		});
    Mon but final étant de lancer une activity et de lui passer les données contenues dans la ligne sélectionnée de la listview.

    Si quelqu'un sait me mettre sur la piste d'une solution ça serait super

    D'avance un grand merci

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 521
    Points
    18 521
    Par défaut
    La méthode c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onItemClick(AdapterView<?> parent, View view, int position, long id)
    Selon comment tu as construis ton Adapter tu as la position et l'id qui te permettront de récupérer tes infos.

    Si tu connais le numéro de la ligne tu as assez d'information normalement.

    Comment construis-tu ta ListView ?

    Avec une ArrayList ?
    Un Cursor ?
    Un JSONArray ?

    ============
    Edit : ok j'avais mal lu.
    Donc tu as bien récupérer les infos qui étaient dans une ArrayList et maintenant tu veux lancer une Activity.

    Et ben c'est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Intent intent = new Intent(CetteActivity.this, ProchaineActivity.class);
    intent.putExtra("infos", infos);
    startActivity(intent);
    T'as une ArrayList de quoi ?
    Si c'est une classe Parcelable ou Serializable tu pourras faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    intent.putExtra("infos", list.get(position));
    =========================
    Re Edit :
    J'ai encore mal lu.
    list c'est une ListView et getItemIdAtPosition c'est une méthode de ListView.

    D'où ma première question, comment tu remplit ta ListView ?

    Et au fait est-ce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.getItemIdAtPosition(arg2)
    n'est pas équivalent à arg3 ?

    Parce qu'arg3 comme tu l'appelles c'est l'id.
    Keith Flint 1969 - 2019

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    En fait, tu disposes de au moins deux moyens pour le faire :

    1) Ta manière : Récupérer les TextView, les convertir, etc
    2) La manière la plus clean : Récupérer les données de ton modèle (c'est celle que je te conseille)

    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				// TODO Auto-generated method stub
    				Log.i(TAG, "POSITION:" + list.getItemIdAtPosition(arg2));
    				String s1 = (TextView)View.findViewById(R.id.ton_textview_1);
    				String s2 = (TextView)View.findViewById(R.id.ton_textview_2);
    				String s3 = (TextView)View.findViewById(R.id.ton_textview_3);
    				String s4 = (TextView)View.findViewById(R.id.ton_textview_4);
    				//lance ton activity avec s1, s2, s3 et s4
     
    			}


    2) Je ne sais pas comment sont stockées tes données, mais imaginons qu'elles soient dans une liste ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<Valeurs> valeurs;
    Tu dois donc faire comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				// TODO Auto-generated method stub
    				Log.i(TAG, "POSITION:" + list.getItemIdAtPosition(arg2));
    				String s1 = valeurs.get(arg2).getText1();
    				String s2 = valeurs.get(arg2).getText2();
    				String s3 = valeurs.get(arg2).getText3();
    				String s4 = valeurs.get(arg2).getText4();
    				//lance ton activity avec s1, s2, s3 et s4
     
    			}

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Re Edit :
    J'ai encore mal lu.
    list c'est une ListView et getItemIdAtPosition c'est une méthode de ListView.

    D'où ma première question, comment tu remplit ta ListView ?

    Et au fait est-ce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.getItemIdAtPosition(arg2)
    n'est pas équivalent à arg3 ?

    Parce qu'arg3 comme tu l'appelles c'est l'id.
    Merci pour ta réponse rapide et désolé si je n'ai pas été clair

    je rempli ma listView comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ScreenList.add(new ScreenList(myData[1], myData[2], myData[3],myData[4], Integer.parseInt(myData[5])));
    Voici la déclaration de ma listView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ArrayList<ScreenList> ScreenList = new ArrayList<ScreenList>();
    	ListView list;
    	ScreenListAdapter SL;
    J'aurai dû le préciser dans mon premier post.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Simonmarky Voir le message
    En fait, tu disposes de au moins deux moyens pour le faire :

    1) Ta manière : Récupérer les TextView, les convertir, etc
    2) La manière la plus clean : Récupérer les données de ton modèle (c'est celle que je te conseille)

    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				// TODO Auto-generated method stub
    				Log.i(TAG, "POSITION:" + list.getItemIdAtPosition(arg2));
    				String s1 = (TextView)View.findViewById(R.id.ton_textview_1);
    				String s2 = (TextView)View.findViewById(R.id.ton_textview_2);
    				String s3 = (TextView)View.findViewById(R.id.ton_textview_3);
    				String s4 = (TextView)View.findViewById(R.id.ton_textview_4);
    				//lance ton activity avec s1, s2, s3 et s4
     
    			}


    2) Je ne sais pas comment sont stockées tes données, mais imaginons qu'elles soient dans une liste ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<Valeurs> valeurs;
    Tu dois donc faire comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				// TODO Auto-generated method stub
    				Log.i(TAG, "POSITION:" + list.getItemIdAtPosition(arg2));
    				String s1 = valeurs.get(arg2).getText1();
    				String s2 = valeurs.get(arg2).getText2();
    				String s3 = valeurs.get(arg2).getText3();
    				String s4 = valeurs.get(arg2).getText4();
    				//lance ton activity avec s1, s2, s3 et s4
     
    			}
    Merci pour ta réponse rapide.

    Je vais tester pour voir

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Simonmarky Voir le message
    2) Je ne sais pas comment sont stockées tes données, mais imaginons qu'elles soient dans une liste ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<Valeurs> valeurs;
    Tu dois donc faire comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				// TODO Auto-generated method stub
    				Log.i(TAG, "POSITION:" + list.getItemIdAtPosition(arg2));
    				String s1 = valeurs.get(arg2).getText1();
    				String s2 = valeurs.get(arg2).getText2();
    				String s3 = valeurs.get(arg2).getText3();
    				String s4 = valeurs.get(arg2).getText4();
    				//lance ton activity avec s1, s2, s3 et s4
     
    			}
    Cette méthode fonctionne parfaitement pour mon projet.

    Un grand merci à vous deux pour m'avoir aider.

    A bientôt

  7. #7
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 521
    Points
    18 521
    Par défaut
    Donc comme je disais si t'as classe ScreenList est Parcelable ou Serializable tu peux l'envoyez directement à l'autre Activity.
    Keith Flint 1969 - 2019

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Donc comme je disais si t'as classe ScreenList est Parcelable ou Serializable tu peux l'envoyez directement à l'autre Activity.
    Ça je ne sais pas encore bien comment je vais le faire.

    Mais je vais chercher

    Au pire je reviendrai vers toi si j'ai un soucis.

  9. #9
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 521
    Points
    18 521
    Par défaut
    En gros tu va dans ta classe t'ajoute implements Serializable et c'est fini.
    Enfin je crois.
    Keith Flint 1969 - 2019

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    En gros tu va dans ta classe t'ajoute implements Serializable et c'est fini.
    Enfin je crois.
    hum je rencontre un petit soucis avec une seconde activité : java null pointer excep.

    Voici mon code pour le lancement de la seconde activité depuis la première une fois qu'on click sur une ligne de la listview :

    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
    17
    18
    19
     
    list.setOnItemClickListener(new OnItemClickListener() {
     
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				// TODO Auto-generated method stub
    				Log.i(TAG, "POSITION:" + list.getItemIdAtPosition(arg2));
     
    				DATA[1] = ScreenList.get(arg2)._ID;
    				DATA[2] = ScreenList.get(arg2)._SN;
    				DATA[3] = ScreenList.get(arg2)._POS;
    				DATA[4] = ScreenList.get(arg2)._DSC;
     
    				Intent i = new Intent(MainActivity.this, Infos.class);
    				i.putExtra("DATA", DATA);
    				startActivity(i);
     
    			}
    		});
    Au niveau de l'autre activité j'ai fais ceci :

    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
    17
     
    TextView T;
    	String[] RxData;
    	public static final String TAG = "INFO";
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.infos);
    		Log.i(TAG, "oncreate Infos");
    		T = (TextView) findViewById(R.id.textView1);
     
    		Intent sender=getIntent();
            RxData =sender.getExtras().getStringArray("DATA");
            T.setText(RxData[2]);
    	}
    Voici mon manifest où j'ai rajouté la seconde activité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <activity
                android:name=".Infos"
                android:label="Information"
                android:screenOrientation="portrait"
                ></activity>
    Je ne vois pas trop pourquoi j'ai un null pointer exception

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    EDIT:

    je viens de tester sans le lancement de ma seconde activité le problème est le même.

    Donc il y a un soucis au niveau du remplissage du tableau "DATA"...

  12. #12
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 521
    Points
    18 521
    Par défaut
    Tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getIntent().getExtras().getStringArray("DATA");
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getIntent().getStringArrayExtra("DATA");
    Mais t'es sûre que DATA c'est un String Array ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] Data = new String[5];
    ================
    Ce serait plus rapide de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    intent.putExtra("instanceDeTaClasse", ScreenList[position]);
    //
    getIntent().getSerializableExtra("instanceDeTaClasse");
    Si t'as classe était Serializable.
    Enfin bon t'as classe c'est 4 Strings et un Int ça passe dans un String Array.
    Keith Flint 1969 - 2019

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getIntent().getExtras().getStringArray("DATA");
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getIntent().getStringArrayExtra("DATA");
    Mais t'es sûre que DATA c'est un String Array ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] Data = new String[5];
    ================
    Ce serait plus rapide de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    intent.putExtra("instanceDeTaClasse", ScreenList[position]);
    //
    getIntent().getSerializableExtra("instanceDeTaClasse");
    Si t'as classe était Serializable.
    Enfin bon t'as classe c'est 4 Strings et un Int ça passe dans un String Array.
    Honnêtement, je ne m'y connais pas suffisamment pour pouvoir discuter de qu'est ce qui est le mieux pour mon application. Quoiqu'il en soit, je testerai ta solution.

    Pour le moment je parviens à passer mon tableau vers ma seconde activité.

    Je suis toujours entrain de travailler avec ma listview et je ne parviens pas à implémenter la suppression d'un élément de la listview.

    Je souhaite utiliser "setOnItemLongClickListener"

    J'ai testé ceci mais j'ai une exception à nouveau :

    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
    17
     
     
    list = (ListView) this.findViewById(R.id.listView1);
    		SL = new ScreenListAdapter(this, ScreenList);
    		list.setAdapter(SL);
     
    list.setOnItemLongClickListener(new OnItemLongClickListener() {
     
    			public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
    					int arg2, long arg3) {
    				Log.i(TAG, "onItemLongClick");
    				// TODO Auto-generated method stub
    				list.removeViewAt(arg2);
    				SL.notifyDataSetChanged();
    				return false;
    			}
    		});
    Je ne suis pas certain que ce soit la meilleur manière de faire.
    J'avais pensé à faire un scroll vers le droite de l'item de la listview pour le supprimer mais bon.. ca devient un peu plus compliqué. C'est pourquoi j'aimerai implémenter simplement ceci.

    Je cherche également une solution pour qu'une fois la deuxième activité terminée, elle communique à l'activité principale qu'elle à terminé. J'ai testé la méthode onNewIntent mais rien n'y fait, je ne parviens pas à récupérer l'intent envoyée par la seconde activité.

    J'ai pensé à utilisé un handler pour communiquer de petits messages pour vérifier les étapes de mon application mais je ne parviens pas à passer l'objet handler avec un intent vers la deuxième activité.

    J'espère que j'ai été clair dans ma demande

  14. #14
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 521
    Points
    18 521
    Par défaut
    Bon déjà si ça plante on sait que le onItemLongClickListener fonctionne.

    Normalement tu devrais nous montrer ton logcat, à l'endroit où ça a planté (donc tout le pavé rouge).

    Cela dit, l'erreur semble évidente, si je ne dis pas de bêtise.

    Moi je serais d'avis de dire que le problème est du à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.removeViewAt(arg2);
    Ce que tu devrais faire c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maListe.remove(position);
    C'est pas une vue que tu veux supprimer, c'est l'item dans la liste qui a permis de créer ta ListView.
    Keith Flint 1969 - 2019

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Bon déjà si ça plante on sait que le onItemLongClickListener fonctionne.

    Normalement tu devrais nous montrer ton logcat, à l'endroit où ça a planté (donc tout le pavé rouge).

    Cela dit, l'erreur semble évidente, si je ne dis pas de bêtise.

    Moi je serais d'avis de dire que le problème est du à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.removeViewAt(arg2);
    Ce que tu devrais faire c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maListe.remove(position);
    C'est pas une vue que tu veux supprimer, c'est l'item dans la liste qui a permis de créer ta ListView.
    Effectivement, cela à résolu mon problème.

    Par contre ce qui est embêtant c'est que quand il supprime la ligne de la listview en question, il la replace avec l'élement suivant de la listview à la place de celle qui à été supprimé et donc l'application pense que j'ai sélectionné le nouveau item qui est à la place de l'ancien qui à été supprimé.

  16. #16
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 521
    Points
    18 521
    Par défaut
    Normalement ça ne devrait pas poser de problème.

    Si tu modifies ton ArrayList et que la ListView est reconstruite avec cette nouvelle ArrayList je vois pas où est le problème.
    Keith Flint 1969 - 2019

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Normalement ça ne devrait pas poser de problème.

    Si tu modifies ton ArrayList et que la ListView est reconstruite avec cette nouvelle ArrayList je vois pas où est le problème.
    En faite imagine une listview avec 3 élements.

    Les 3 élements de la liste peuvent lancer une activité si on sélectionne un des 3 dans la listview.

    Dans mon cas, lorsque je supprime l'item 1 de la listview, l'item 2 prend sa place (et item 3 prend la place de item 2).

    La listview est donc bien mise à jour.

    Par contre, quand l'item 2 prend la place de l'item 1, l'application pense que j'ai sélectionné l'item 2 et donc lance une autre activité.

    Alors que j'ai simplement sélectionné l'item 1 qui à bien été supprimé mais qui a laissé la place à l'item 2 qui est donc "sélectionné" sans le vouloir.

  18. #18
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 521
    Points
    18 521
    Par défaut
    Oui alors tu as très mal conçu ton code.

    Est-ce que parmi les variables de ta classe, il y a quelque chose qui te permette de savoir quelle Activity tu dois lancer ?

    Il faut faire les choses en fonction de l'item sélectionné et non pas en fonction de la position de sa vue.

    Ce qu'il faut faire c'est : dans ta méthode onClick récupéré l'item dans ton ArrayList et en fonction de l'item lancer l'Activity qu'il faut.
    Keith Flint 1969 - 2019

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Oui alors tu as très mal conçu ton code.

    Est-ce que parmi les variables de ta classe, il y a quelque chose qui te permette de savoir quelle Activity tu dois lancer ?

    Il faut faire les choses en fonction de l'item sélectionné et non pas en fonction de la position de sa vue.

    Ce qu'il faut faire c'est : dans ta méthode onClick récupéré l'item dans ton ArrayList et en fonction de l'item lancer l'Activity qu'il faut.
    Il n'y a qu'une seule activité qui peut être lancé grâce au 3 items de la listview. La seul chose qui diffère entre les 3 items c'est le contenu des items de la listeview qui est envoyé à la seconde activité.

    Donc pour résumer la situation, j'ai deux activités dont une est exécuté lors de la sélection d'un item de la listview.

    L'activité s'exécute et traite les données de l'item sélectionné précédemment.

    Peut être je devrai implémenter une solution avec des variables boolean pour vérifier qu'on ne touche plus l'écran ou autre...

  20. #20
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 521
    Points
    18 521
    Par défaut
    J'ai pas compris.

    Pour simplifier on va dire que les instances de classe qui sont dans ton ArrayList on des noms, ce sera A, B, C et D.
    0 -> A
    1 -> B
    2 -> C
    3 -> D

    Je supprime B :
    0 -> A
    1 -> C
    2 -> D

    Là je clique sur 1, je récupère l'item C.
    Où est le problème ?
    Keith Flint 1969 - 2019

Discussions similaires

  1. Récupérer des données depuis une BDD sur un serveur de mon site web
    Par kookitanou dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 30/10/2012, 10h52
  2. [MySQL] récupérer des données depuis une table mysql
    Par godbless dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/10/2008, 13h04
  3. Récupérer des données sur une page HTML
    Par rupeni dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 18/11/2005, 17h22
  4. Récupérer des données dans une page HTML
    Par newdelirium dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2005, 19h18
  5. [Excel] Récupérer des données d'une base Access
    Par FoxDeltaSierra dans le forum Excel
    Réponses: 8
    Dernier message: 03/09/2005, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo