Aller au contenu

[Résolu] Le drawerLayout


Am_Me

Recommended Posts

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é par Am_Me
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é par Am_Me
Lien vers le commentaire
Partager sur d’autres sites

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 ( et 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)

Lien vers le commentaire
Partager sur d’autres sites

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 ( et 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é par Am_Me
Lien vers le commentaire
Partager sur d’autres sites

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é par Am_Me
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...