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

Android Discussion :

ListeView dans une ListeView


Sujet :

Android

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut ListeView dans une ListeView
    Bonjour,

    J'essaie de créer une Listview dans une ListView dans une application Android.

    Je rencontre un problème, ma ListeView ne se redimensionne pas. Je vois uniquement une ligne.

    Pour ce faire j'utilise 2 adapters. Voici le code de ma listView principale:

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    public class ListProduitsOfCategorieAdapter extends ArrayAdapter<ProduitsOfCategorie> {
     
     
     
    	 CheckBox mCheckBox;
    	 View mRowView;
    	 GetListeProduitActivity mGetListeProduitActivity;
     
    	@SuppressLint("ViewHolder")
    	@Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater)
              getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     
            final View rowView = inflater.inflate(R.layout.listview_produitsofcategorie_liste, parent, false);
     
            TextView titreView = (TextView) rowView.findViewById(R.id.textViewProduitListe);
            titreView.setTypeface(null, Typeface.BOLD);
            if(getItem(position)!=null)
            	if(getItem(position).getCategorie().getTitre()!=null)
            		titreView.setText(getItem(position).getCategorie().getTitre());
     
     
            ListView mListeViewProduit = (ListView) rowView.findViewById(R.id.listviewproduit);
     
    			if(mGetListeProduitActivity!=null)
    			{
    				ListProduitListeAdapter mListProduitAdapter=new ListProduitListeAdapter(mGetListeProduitActivity,getItem(position).getProduits());
    				mListeViewProduit.setAdapter(mListProduitAdapter);
    			}
     
    		/*else
    		{
    			mListProduitsOfCategorieAdapter.notifyDataSetChanged();
    		}*/
     
     
     
     
            return rowView;
        }
     
        public ListProduitsOfCategorieAdapter(Context context, List<ProduitsOfCategorie> list) {
            super(context, R.layout.listview_produit_liste, list);
        }
     
    	public ListProduitsOfCategorieAdapter(GetListeProduitActivity activity, List<ProduitsOfCategorie> list) {
            super(activity, R.layout.listview_produit_liste, list);
     
            mGetListeProduitActivity=activity;
    	}
     
     
    }
    mon listview_produitsofcategorie_liste.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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/boder_black" >
     
        <TextView
            android:id="@+id/textViewProduitListe"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="2dp"
            android:layout_marginStart="2dp"
            android:gravity="center_vertical"
            android:textColor="#000000"
            android:textSize="14sp" />
     
        <View
            android:id="@+id/dividerhorizontal"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_alignLeft="@+id/textViewProduitListe"
            android:layout_below="@+id/textViewProduitListe"
            android:background="#aaaaaa" />
     
        <ListView
            android:id="@+id/listviewproduit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/textViewProduitListe"
            android:layout_below="@+id/dividerhorizontal"
            android:divider="@android:color/transparent"
            android:dividerHeight="1dp" />
     
    </RelativeLayout>
    Et ma 2ème 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    public class ListProduitListeAdapter extends ArrayAdapter<Produit> {
     
     
    	public int RESULT_EDIT_PRODUITMODEL=1;
     
    	public int RESULT_EDIT_CATEGORIE=2;
     
    	 CheckBox mCheckBox;
    	 View mRowView;
    	 GetListeProduitActivity mGetListeProduitActivity;
     
    	@SuppressLint("ViewHolder")
    	@Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater)
              getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     
            final View rowView = inflater.inflate(R.layout.listview_produit_liste, parent, false);
     
            TextView titreView = (TextView) rowView.findViewById(R.id.textViewProduitListe);
            if(getItem(position)!=null)
            	if(getItem(position).getTitre()!=null)
            		titreView.setText(getItem(position).getTitre());
     
            ImageView imgView = (ImageView) rowView.findViewById(R.id.imageProduitListe);
     
            if(getItem(position).getAvatar()!=null)
            {
            	String url = getItem(position).getAvatar();
     
            	Picasso.with(getContext())
        	    .load(url)
        	    .placeholder(R.drawable.ic_loader)
        	    .error(R.drawable.ic_defaut_liste)
        	    .into(imgView);
            }
     
     
     
     
     
            TextView qteView = (TextView) rowView.findViewById(R.id.textViewQteProduitListe);
            if(getItem(position)!=null)
            	if(getItem(position).getQte()!=null)
            		qteView.setText(getItem(position).getQte().toString());
     
     
     
     
            return rowView;
        }
     
        public ListProduitListeAdapter(Context context, List<Produit> list) {
            super(context, R.layout.listview_produit_liste, list);
        }
     
    	public ListProduitListeAdapter(GetListeProduitActivity activity, List<Produit> list) {
            super(activity, R.layout.listview_produit_liste, list);
     
            mGetListeProduitActivity=activity;
    	}
    listview_produit_liste.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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="match_parent" android:layout_height="wrap_content"
    	>
    	<LinearLayout	    
    	android:layout_width="match_parent" android:layout_height="wrap_content"
    	 android:orientation="horizontal" >
    	<ImageView
        android:id="@+id/imageProduitListe"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="1dp"
            android:layout_marginTop="1dp"
            android:layout_marginBottom="1dp"
            android:src="@drawable/img_default"
            android:contentDescription="imageProduit"
            android:layout_height="60dp"
            android:layout_width="60dp"
            android:adjustViewBounds="true"
           />
    <TextView
        android:id="@+id/textViewProduitListe"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:textSize="18sp"
        android:textColor="#000000"
        android:layout_marginLeft="5dp"
        android:layout_marginStart="5dp"/>
    </LinearLayout>
    <LinearLayout	    
    	android:layout_width="wrap_content" android:layout_height="41dp"
    	 android:orientation="horizontal" 
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_gravity="end"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        >
    	<View
    		android:layout_width="1dp"
    		android:layout_height="match_parent"
    		android:background="@android:color/darker_gray"/>
    <CheckBox 
        android:id="@+id/CheckBoxProduitListe"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:layout_marginRight="5dp"
        android:layout_marginEnd="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginStart="5dp"
        android:textSize="18sp"
        />
    </LinearLayout>
    </RelativeLayout >


    J'ai l'impression que la 2ème ListView ne se redimensionne pas. Comment je peux faire pour que la ListView s'élargie pour afficher tous les produits?
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Il es très fortement déconseillé d'utiliser plusieurs éléments scrollables imbriqués.
    Tu vas te retrouvé avec un problème quand ta listview "parente" sera également scrollable. C'est ergonomiquement pas utilisable et le système à en général du mal à définir qui il doit scroller.

    Il serait plus judicieux de revoir ton ergonomie sur ce point.

    Pour ton problème , il suffit à mon avis de donner une hauteur fixe à ta listeview de produit.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    Merci pour ta réponse.

    Effectivement, j'avais déjà testé en saisissant une valeur fixe et cela fonctionne.

    Cependant je ne peux pas faire cela car je ne connais pas à l'avance le nombre d'item de chaque sous-ListView.

    Après une solution serait de modifier la hauteur via le code. Mais je trouve cette solution pas très propre.

    N'existe-il pas un widget permettant d'afficher plusieurs liste imbriquée? (Où quelque chose qui s'en approche)
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


  4. #4
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    l'ExpandableListView ne pourrait-il pas solutionner ce problème?

    Je testerais ce soir...
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


Discussions similaires

  1. Afficher les élements d'un tableau dans une ListeView
    Par pink192 dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 22/07/2013, 10h26
  2. [Débutant] charger images dossier dans une listeView
    Par janyoura dans le forum Windows Forms
    Réponses: 0
    Dernier message: 17/07/2013, 12h57
  3. [Débutant] Rechercher les items dans une listeview
    Par Martipit dans le forum VB.NET
    Réponses: 14
    Dernier message: 01/10/2012, 22h26
  4. récuperer les données de ma base dans une listeView
    Par bounasri dans le forum Android
    Réponses: 3
    Dernier message: 06/05/2011, 18h35
  5. actualiser une listeview dans un winform
    Par Msysteme dans le forum C#
    Réponses: 3
    Dernier message: 19/03/2010, 16h03

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