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 :

Organiser un ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut Organiser un ListView
    Salut à tous
    Voila je me creuse la tête depuis pas mal de temps afin d'organiser mon listview comme je le voudrais.
    Je m'explique :
    je souhaiterais que sur chaque ligne de mon listview il y est 2 items. un tout à gauche et l'autre tout à droite. Je vous joint une photos de ce que je souhaiterais afin d'être clair.
    Merci à tous.
    Images attachées Images attachées  

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Et quel est le problème ? Que n'arrivez vous pas à faire ?
    Qu'avez vous essayé ? Quel fichier de layout utilisez vous ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut
    Voila pour 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
     liste_matiere = getResources().getStringArray(ressource);
     
             int taille = liste_matiere.length;
     
             String note[] = new String[taille];
             String liste[] = new String[taille+1];
     
             //affecte le nom de la note à la note
        	 for(int i=0;i<taille;i++)
        	    	{
        	        note [i] = lireFichier(departement+"/S"+semestre+"/"+nom_matiere+"/"+liste_matiere[i]+".txt");
        	        liste[i] = liste_matiere[i]+"           "+note[i];
        	   	}
     
        	 //affecte à la listview le contenu du tableau liste
        	liste_note.setAdapter(new ArrayAdapter<String>(consulter_note.this, android.R.layout.simple_list_item_1,liste));
    Et au lieu de faire " " entre mes 2 tableaux je voudrais en mettre un a droite et l'autre à gauche. Et ça je ne sais pas comment faire.

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Déjà... dans ce cas, ce n'est plus de simple "String" que vous voulez stocker dans le ArrayAdapter, mais autre chose contenant deux String...

    Appelons le "Data"... Dans le jargon Java, on appelle cela un "POJO" (Plain Old Java Object)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Data 
    {
          String   matiere;
          String   note;
     
          public String getMatiere() { return this.matiere; }
          public void setMatiere(String m) { this.matiere = m; }
     
          public String getNote() { return this.note; }
          public void setNote(String n) { this.note = n; }
    }
    Le code contient alors un tableau de "Data"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Data[] allDatas = new Data[taille];
    for (int i = 0; (i < taille); ++i) {
        allDatas[i] = new Data();
        allDatas[i].setMatiere(liste_matiere[i]);
        allDatas[i].setNote(lireFichier(departement+"/S"+semestre+"/"+nom_matiere+"/"+liste_matiere[i]+".txt"));
    }
    Puis ensuite, l'adapter va utiliser ces Data:

    On a pas encore fini, bien au contraire... il faut maintenant dire à l'adapter d'utiliser *autre chose* que simple_list_item_1 (qui n'affiche qu'un simple TextView)... A vous de fournir le layout pour les items...

    Pour terminer, il va nous falloir surcharger ArrayAdapter<Data> pour mettre les données dans les bonnes views par exemple:
    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
     
    public class DataAdapter extends ArrayAdapter<Data>
    {
        public DataAdapter(Context ctxt, Data[] array)
        {
             // remplacer par l'identifiant du layout déssiné plus haut
             super(ctxt,R.layout.xxxxxxxxxxxxxx,array);
        }
     
        @Override
        public View getView(View convertView, int position, View parentView)
        {
             View v = super.getView(convertView,position,parentView);
             Data d = getItem(position);
             v.findViewById(R.id.matiereText).setText(d.getMatiere());
             v.findViewById(R.id.noteText).setText(d.getNote());
             return v;
         }
    }
    Reste plus qu'à utiliser l'adapter en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new DataAdapter (consulter_note.this, ,allDatas));

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut
    Merci pour cette réponse complète !
    Seulement j'ai deux message d'erreur. Le premier concernant le getText :The method setText(String) is undefined for the type View
    Le second pour le getView : The method getView(int, View, ViewGroup) in the type ArrayAdapter<consulter_note.Data> is not applicable for the arguments (View, int, View)

    Citation Envoyé par nicroman Voir le message

    Pour terminer, il va nous falloir surcharger ArrayAdapter<Data> pour mettre les données dans les bonnes views par exemple:
    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
     
    public class DataAdapter extends ArrayAdapter<Data>
    {
        public DataAdapter(Context ctxt, Data[] array)
        {
             // remplacer par l'identifiant du layout déssiné plus haut
             super(ctxt,R.layout.xxxxxxxxxxxxxx,array);
        }
     
        @Override
        public View getView(View convertView, int position, View parentView)
        {
             View v = super.getView(convertView,position,parentView);
             Data d = getItem(position);
             v.findViewById(R.id.matiereText).setText(d.getMatiere());
             v.findViewById(R.id.noteText).setText(d.getNote());
             return v;
         }
    }
    Reste plus qu'à utiliser l'adapter en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new DataAdapter (consulter_note.this, ,allDatas));

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Non mais faut pas recopier le code que j'ai collé verbatim, il faut l'adapter, c'était un exemple

    La signature des méthodes n'est pas forcément la bonne (getView par exemple, doit être un truc genre: "public View getView(int position, View convertView, ViewGroup parent)") Eclipse est "override implement method" est pratique pour cela !

    et il faut certainement utiliser un cast en TextView (ou Button selon le layout choisi) avant d'appeler setText()

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut
    J'ai fini par trouver une solution. Si ça peux servir à quelqu'un ...

    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
     liste_matiere = getResources().getStringArray(ressource);
     
             int taille = liste_matiere.length;
     
             String note[] = new String[taille];
     
     
             //affecte le nom de la note à la note
        	 for(int i=0;i<taille;i++)
        	    	{
        	        note [i] = lireFichier(departement+"/S"+semestre+"/"+nom_matiere+"/"+liste_matiere[i]+".txt");
     
        	   	}
     
        	 //affecte à la listview le contenu du tableau liste
    liste_note.setAdapter(new CustomListAdapter(consulter_note.this, R.layout.items_listview, liste_matiere));
    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
     
    private class CustomListAdapter extends ArrayAdapter<String> {
     
    	    public CustomListAdapter(Context context, int textViewResourceId,
    	            String[] objects) {
    	        super(context, textViewResourceId, objects);
    	        this.notifyDataSetChanged();
    	    }
     
    	    @Override
    	    public View getView(int position, View convertView, ViewGroup parent) {
    	        LayoutInflater inflater = getLayoutInflater();
    	        View row = inflater.inflate(R.layout.items_listview,
    	                parent, false);
     
    	        TextView matiereText = (TextView) row.findViewById(R.id.TextView01);
    	        TextView noteText = (TextView) row.findViewById(R.id.TextView02);
    	        ;
     
    	                    matiereText.setText(liste_matiere[position]);
    	                    noteText.setText(note[position]);
     
    	        return row;
    	    }
    	}
    et mon code listitem.xml
    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
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
     
      		<TextView
      		    android:id="@+id/TextView01"
      		    android:layout_width="wrap_content"
      		    android:layout_height="fill_parent" 
      		    android:layout_marginRight="30dip"
      		    android:text="Hello1"
      		    android:textSize="16dp" />
     
    		<TextView
    		    android:id="@+id/TextView02"
    		    android:layout_width="fill_parent"
    			android:layout_height="fill_parent" 
    		    android:gravity="right"
    		    android:text="Hello2"
    		    android:textSize="16dp" />
     
    </LinearLayout>

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

Discussions similaires

  1. Organiser une ListView par Catégorie
    Par slama007 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 31/07/2012, 12h33
  2. Organiser un spinner pris à partir d'un listview
    Par Agriesean dans le forum Composants graphiques
    Réponses: 7
    Dernier message: 08/06/2011, 11h41
  3. Organisation des items d'un listview en view=list
    Par mr_keyser dans le forum Windows Forms
    Réponses: 6
    Dernier message: 18/12/2007, 10h47
  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