Am_Me Posté(e) 25 juin 2013 Share Posté(e) 25 juin 2013 (modifié) Bonjour a tous Alors voila j'ai mis dans mon application un drawerlayout (lien vers exemple de google http://developer.and...nav-drawer.html) Et donc j'ai une listview que j'ouvre et je ferme quand je veux jusque la tout ce passe bien Mais maintenant je souhaiterai ajouter une imageview a cote de chaque ligne de la listview Mais vu comment dans l'exemple cela a ete implementé cela me parrai infaisable Si quelqu'un aurai une solution Modifié 25 juin 2013 par Am_Me Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 25 juin 2013 Share Posté(e) 25 juin 2013 C'est tout à fait possible. Il faut que tu définisses un Adapter spécifique dans lequel tu redéfinis la méthode getView, ce qui te permet de gérer le Layout de chaque élément de la liste Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Am_Me Posté(e) 25 juin 2013 Auteur Share Posté(e) 25 juin 2013 (modifié) C'est tout à fait possible. Il faut que tu définisses un Adapter spécifique dans lequel tu redéfinis la méthode getView, ce qui te permet de gérer le Layout de chaque élément de la liste Merci de ta réponse je suis nouveau sur la dev android ta réponse est correcte mais cela me pose probleme Actuellement j'ai ca : private DrawerLayout mDrawerLayout; private ListView mDrawerList; mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mString)); En gros je doit creer une classe du style : public class CustomListViewAdapter extends ArrayAdapter<String> et au lieu de faire mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mString)); Je devrai faire mDrawerList.setAdapter(new CustomListViewAdapter(this, R.layout.drawer_list_item, mString)); ???? Modifié 25 juin 2013 par Am_Me Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 25 juin 2013 Share Posté(e) 25 juin 2013 Il te faut aussi modifier ton layout (celui qui correspond à un élément de la ListView, donc drawer_list_item.xml dans ton cas) pour qu'il contienne un ImageView (si c'est ce que tu veux ajouter) Et dans ta classe Adapter, tu dois implémenter la méthode getView, qui est appelée à chaque fois qu'une ligne de la liste est affichée, et dans laquelle tu dois faire le nécessaire pour afficher le contenu de la ligne. Il est probable que tu aies besoin de données supplémentaires et que la liste de chaine de caractères ne suffisent plus (mString); tu initialiseras ton Adapter plutôt avec une liste d'objet contenant toutes les informations qui te sont nécessaires. Dans ce cas, ta classe Adapter héritera de ArrayAdapter<MaClasse> (MaClasse représentant la classe des objets qui représentent tes données) Il y a déjà eu des questions (et des réponses) similaires dans le forum (là et là par ex), tu peux t'en inspirer (il y avait aussi des exemples clairs dans la doc développeur, mais je n'arrive plus à remettre la main dessus) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Am_Me Posté(e) 25 juin 2013 Auteur Share Posté(e) 25 juin 2013 (modifié) Il te faut aussi modifier ton layout (celui qui correspond à un élément de la ListView, donc drawer_list_item.xml dans ton cas) pour qu'il contienne un ImageView (si c'est ce que tu veux ajouter) Et dans ta classe Adapter, tu dois implémenter la méthode getView, qui est appelée à chaque fois qu'une ligne de la liste est affichée, et dans laquelle tu dois faire le nécessaire pour afficher le contenu de la ligne. Il est probable que tu aies besoin de données supplémentaires et que la liste de chaine de caractères ne suffisent plus (mString); tu initialiseras ton Adapter plutôt avec une liste d'objet contenant toutes les informations qui te sont nécessaires. Dans ce cas, ta classe Adapter héritera de ArrayAdapter<MaClasse> (MaClasse représentant la classe des objets qui représentent tes données) Il y a déjà eu des questions (et des réponses) similaires dans le forum (là et là par ex), tu peux t'en inspirer (il y avait aussi des exemples clairs dans la doc développeur, mais je n'arrive plus à remettre la main dessus) Ok mais en fait mon drawer_list_item.xml n'est pas ma vue principale En gros voila mon activity_main : <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="left"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> ........... </RelativeLayout> <ListView android:id="@+id/listDrawer" android:layout_width="190dp" android:layout_height="match_parent" android:layout_gravity="left" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#111"/> </android.support.v4.widget.DrawerLayout> et ca c'est le xml dont je parlais au départ drawerlistitem <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:gravity="center_vertical" android:paddingLeft="16dp" android:paddingRight="16dp" android:textColor="#fff" android:background="?android:attr/activatedBackgroundIndicator" android:minHeight="?android:attr/listPreferredItemHeightSmall" /> mais le probleme dans drawer list item je ne peux pas lui spécifier ImageView car ca ne ve pas compiler le fichier xml car il ne prend qu'une textView et je ne peux pas rajouter LinearLayout ou RelativeLayout sinon mon appli crash Modifié 25 juin 2013 par Am_Me Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 25 juin 2013 Share Posté(e) 25 juin 2013 Si tu ne modifies que le layout, alors oui, forcément, ça ne va pas marcher; il faut aussi adapter le code, comme je l'indiquais. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Am_Me Posté(e) 25 juin 2013 Auteur Share Posté(e) 25 juin 2013 (modifié) Si tu ne modifies que le layout, alors oui, forcément, ça ne va pas marcher; il faut aussi adapter le code, comme je l'indiquais. Si en gros dans drawerlistitem je rajoute LinearLayout dans le xml alors le code doit changer ? en gros je dois mettre en place la méthode getView si linearlayout est specifie Modifié 25 juin 2013 par Am_Me Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 25 juin 2013 Share Posté(e) 25 juin 2013 En gros, oui :) 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Am_Me Posté(e) 25 juin 2013 Auteur Share Posté(e) 25 juin 2013 (modifié) J'essaie d'implémenter ceci est je reviendrai vers toi dans le besoins MERCI beaucoup ;) MAJ : Merci ça m'a aidé et j'ai réussi :D Modifié 25 juin 2013 par Am_Me Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.