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 :

[ListView] extrait un TextView


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier Avatar de windmastr26
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 234
    Points : 108
    Points
    108
    Par défaut [ListView] extrait un TextView
    Bonjour à tous,

    Voilà une question qui a visiblement été posée souvent mais je n'ai pas su trouver sur le forum un sujet qui puisse m'aider...

    J'ai une ListView dont chaque item est composé d'une image et de 2 textes :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >    
    	<ImageView 
    	    android:id="@+id/bank_picture"
    	    android:layout_height="wrap_content"
    	    android:layout_width="wrap_content"
    	    android:layout_gravity="center_vertical"
    	    android:padding="10px"
    	    android:src="@drawable/bank"
    	    />	
    	<LinearLayout 
    	    xmlns:android="http://schemas.android.com/apk/res/android"
    	    android:orientation="vertical"
    	    android:layout_width="fill_parent"
    	    android:layout_height="wrap_content"
    	    android:gravity="center_vertical"
    	    android:paddingLeft="10px"
    	    android:layout_weight="1">	    
    	    <TextView 
    	        android:id="@+id/bank_name"
    	        android:layout_width="fill_parent"
    	        android:layout_height="fill_parent"
    	        android:textStyle="bold"
    	        />
    	    <TextView
    	        android:id="@+id/bank_address"
    	        android:layout_width="fill_parent"
    	        android:layout_height="fill_parent"
    	        />
    	</LinearLayout>
    </LinearLayout>
    Je l'utilise ensuite ainsi dans mon code :

    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
    20
    21
            ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
            HashMap<String, String> map;
     
            MaDataBase bd = new MaDataBase(getBaseContext());
            bd.open();
            Cursor c = bd.bankList();
            if (c.moveToFirst())
    	        do {
    	            map = new HashMap<String,String>();
    	            map.put("bank_name", c.getString(1));
    	            map.put("bank_address", c.getString(2));
    	            listItem.add(map);        	
    	        } while (c.moveToNext());
    	    bd.close();
     
            liste = (ListView) findViewById(R.id.opList);        
            SimpleAdapter sa = new SimpleAdapter(this.getBaseContext(), listItem, R.layout.bank_item, 
            									 new String[] {"bank_name","bank_address"}, 
            									 new int[] {R.id.bank_name, R.id.bank_address});
            liste.setAdapter(sa);
            registerForContextMenu(liste);
    Ce que j'aimerai, c'est pouvoir récupérer, lors d'un clic sur un élément, le contenu du TextView "bank_name" de la ligne en cours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            liste.setOnItemClickListener(new OnItemClickListener() {			
    			public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    				String toto = (String) liste.getAdapter().getItem(1);
    			}
    		});
    De ce que j'ai lu il faut créer son propre "adapter" ? Ou existe-t-il d'autres solutions ?

    Merci pour vos réponses.

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour,

    Le plus propre est de créer son propre adapter en effet.

    Ensuite tu peux bidouiller pour y arriver en mettant ta liste dans un tableau d'objet et au clic tu récupères un élément de ton tableau via la position cliquée.

    Je te conseille tout de même de créer ton adapter (Regarde ici par exemple )

  3. #3
    Membre régulier Avatar de windmastr26
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 234
    Points : 108
    Points
    108
    Par défaut
    Merci David de m'avoir répondu aussi rapidement.

    La solution du "tableau" ne me plait pas trop. C'est peut être idiot mais je souhaite plutôt un objet avec des méthodes propres.

    Je vais donc adapter mon propre adapter (bizarre comme phrase) comme tu le conseil. Je posterai le code sur le forum si j'y parviens.

    Merci encore

  4. #4
    Membre régulier Avatar de windmastr26
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 234
    Points : 108
    Points
    108
    Par défaut
    J'ai trouvé une solution qui me convient mieux dans un autre tutoriel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    maListView.setOnItemClickListener(new OnItemClickListener() {
       public void onItemClick(AdapterView<?> a, View v, int position, long id) {
          HashMap<String, String> map = (HashMap<String, String>) maListView.getItemAtPosition(position);
          String valeur = map.get("nom");
       }
    });
    En fait il suffit de caster l'objet renvoyé par la méthode "getItemAtPosition" puis d'aller chercher la valeur correspondante en utilisant "get()" avec le nom de la clé.

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. De TextView vers ListView
    Par hetlar dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 25/07/2013, 04h03
  2. ListView ouvrir TextView en-dessous
    Par xouzi dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 19/01/2012, 17h59
  3. Listview et textview dans un linearlayout
    Par tweetysat dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 24/12/2010, 12h47
  4. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  5. ListView
    Par SnickeursMan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/08/2002, 10h42

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