Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Récupérer des données d'un ListView ?

Sujet résolu
    27 mai 2013 à 22:43:15

    Bonjour tout le monde !

    Je patauge un peu dans la récupération d'informations sur l'item checked de ma ListView.

    Je m'explique : 

    J'ai une une BD local utilisant DAO qui contient une table ACTIVITES. Une Activite contient notament un ID, un Nom, une Description.

    J'ai une ListView qui m'affiche les Noms de toutes mes Activites.

    Mon but : Récupérer toutes les "attributs" de l'Activité sélectionnée.

    Seulement d'après mes recherches, le seul moyen de récupérer l'item selectionnée est 

    getCheckedItemPosition();
    getItemIdAtPosition(pos); // qui me renvoi l'Id de la liste... Je sais pas quoi faire avec !
    getItemAtPosition(pos); // qui me renvoi un Object, et je ne sais pas quoi faire non plus avec !


    Je voudrais juste faire le lien entre l'item que je selectionne avec celui qui correspond à ma BD.

    Merci d'avance pour votre aide !

    • Partager sur Facebook
    • Partager sur Twitter
      28 mai 2013 à 8:10:13

      Bonjour,

      Tu peux mettre à l'écoute ta ListView avec le listener "OnItemClickListener". Qui implémente la méthode  : onItemClick.

      Tu pourras ainsi récupérer ton item grâce à la méthode getItemAtPosition(position).

      Après comme tu as fait du DAO il te suffit de créer un objet X qui prendra en valeur l'objet récupérer avec getItemAtPosition(position) que tu castreras en X.

      X étant l'objet où tu souhaites récupérer les attributs ensuite...

      • Partager sur Facebook
      • Partager sur Twitter
        28 mai 2013 à 11:55:19

        Bonjour, 

        Je viens justement de réaliser ça, voila mon code :

        		ListView list = (ListView) findViewById(R.id.listLens);		
        		item = new LinkedList<String>();			// création de la liste des enregistrement	
        		
        		// compte le nombre de ligne dans la table 
        		T_enregistrementBDD enregBdd = new T_enregistrementBDD(this);
        		enregBdd.open();
        		Cursor c = enregBdd.numberOfEnreg();
        		//c.getCount();  => Est directement calculer dans la boucle FOR, compte le nombre de ligne de la table	
        		
        		for(int i=1 ; i<=c.getCount() ; i++)
        			item.add(enregBdd.getEnregWithId(i).getNom());				// Ajout dans la liste de séléction	
        				
        		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, item);
        		list.setAdapter(adapter);
        		
        		list.setOnItemClickListener(new OnItemClickListener() {
        			@Override
        			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {				
        				MainActivity.txtvLens.setText("Lens : " + item.get(position)); // affichage de l'objet selectionné				
        				// action				
        				finish();
        			}
        		});
        • Partager sur Facebook
        • Partager sur Twitter
          28 mai 2013 à 14:14:54

          Merci pour  vos réponses !

          J'ai oublié de préciser que je voudrais récupérer mon activité selectionnée lorsque je clique sur un item d'une autre liste (qu'il faudra que je récupère aussi par la suite). Je sais pas si ça change quelque chose...

          cleandroid22kh a écrit:

          Bonjour,

          Tu peux mettre à l'écoute ta ListView avec le listener "OnItemClickListener". Qui implémente la méthode  : onItemClick.

          Tu pourras ainsi récupérer ton item grâce à la méthode getItemAtPosition(position).

          Après comme tu as fait du DAO il te suffit de créer un objet X qui prendra en valeur l'objet récupérer avec getItemAtPosition(position) que tu castreras en X.

          X étant l'objet où tu souhaites récupérer les attributs ensuite...

          Le problème c'est qu'avec getItemAtPosition(position) je récupére juste ce que j'affiche dans ma ListView, c'est à dire le nom ! Pour que je puisse récupérer l'objet en entier, il faudrait que je récupére l'ID de mon Activité (si je me trompe pas)

          ouan a écrit:

          Bonjour, 

          Je viens justement de réaliser ça, voila mon code :

          		ListView list = (ListView) findViewById(R.id.listLens);		
          		item = new LinkedList<String>();			// création de la liste des enregistrement	
          		
          		// compte le nombre de ligne dans la table 
          		T_enregistrementBDD enregBdd = new T_enregistrementBDD(this);
          		enregBdd.open();
          		Cursor c = enregBdd.numberOfEnreg();
          		//c.getCount();  => Est directement calculer dans la boucle FOR, compte le nombre de ligne de la table	
          		
          		for(int i=1 ; i<=c.getCount() ; i++)
          			item.add(enregBdd.getEnregWithId(i).getNom());				// Ajout dans la liste de séléction	
          				
          		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, item);
          		list.setAdapter(adapter);
          		
          		list.setOnItemClickListener(new OnItemClickListener() {
          			@Override
          			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {				
          				MainActivity.txtvLens.setText("Lens : " + item.get(position)); // affichage de l'objet selectionné				
          				// action				
          				finish();
          			}
          		});

          Merci du partage, je vais regarder ça de plus près !

          • Partager sur Facebook
          • Partager sur Twitter
            28 mai 2013 à 14:29:51

            Voici ce que je récupère avec : getItemAtPosition()

            Mon code :

            vueEmployes.setOnItemClickListener(new OnItemClickListener() { // Listener de ma liste d'employés qui génère la récupération de l'employé cliqué, ainsi que l'activité seléctionné dans vueActivites
                        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                        	
                        	int pos = vueActivites.getCheckedItemPosition(); //récupération de l'activité sélectionnée
                        	Object obj = vueActivites.getItemAtPosition(pos); 
                            Toast.makeText(MainActivity.this, "" + position + "\nAct num : " + obj, Toast.LENGTH_SHORT).show(); //affichage
                        }
                    });

            Le résultat :

            {text1 = NomActivitéSelectionnée, text2 = DescriptionDeLactiviteSelectionnée}

            ( text1 et text2 correspondent aux deux données contenues dans un adapter "simple_list_item_activated_2" )



            -
            Edité par Wii2zO 28 mai 2013 à 14:32:13

            • Partager sur Facebook
            • Partager sur Twitter
              28 mai 2013 à 14:30:28

              J'ai réussi à afficher l'id de mon activité : 

              {id=Activite_Id, text1 = NomActivitéSelectionnée, text2 = DescriptionDeLactiviteSelectionnée}


              Ma dernière question est : comment récupérer un de ces éléments (id, text1, text2) affichés grace aux fonctions :

              int pos = vueActivites.getCheckedItemPosition();
                          	Object obj = vueActivites.getItemAtPosition(pos);
              obj.toString();


              PROBLEME RESOLU :

              HashMap obj = (HashMap) vueActivites.getItemAtPosition(pos);
              String idRecup = (String) obj.get("id");

              Merci cleandroid, il fallait bien faire un cast ! Ensuite j'ai pu instancier ma classe avec mon "idRecup" ! Et ça marche du tonnerre !

              -
              Edité par Wii2zO 28 mai 2013 à 16:56:41

              • Partager sur Facebook
              • Partager sur Twitter

              [Android] Récupérer des données d'un ListView ?

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown