Jump to content

[Résolu] Le drawerLayout


Am_Me
 Share

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

Edited by Am_Me
Link to comment
Share on other 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

Link to comment
Share on other 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));

????

Edited by Am_Me
Link to comment
Share on other 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)

Link to comment
Share on other 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

Edited by Am_Me
Link to comment
Share on other 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

Edited by Am_Me
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...