Jump to content

Quelques soucis avec une listeView contenant des TextView...


tsylvai
 Share

Recommended Posts

Tout d'abord salut à tous (c'est mon premier message alors autant bien commencer).

Voilà je développe depuis quelques mois sur android et je suis confronté au problème suivant :

je fait une sorte de glossaire , pour celà j'ai une Liste View tout simple

list_view.xml

<LinearLayout ......
. . .
<ListView
	android:id="@id/liste"
	android:background="@android:color/white"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent" >
</ListView>
. . .
</LinearLayout>

dans cette liste view je place des éléments qui contiennent pour simplifier

item.xml

<TextView
	android:id="@id/texte"
	android:layout_width="fill_parent"
	android:layout_height="0dip"
	android:textColor="@color/Gris32"
	android:textSize="14dp"
	android:padding="8dp"
	android:singleLine="false"
	android:text="@string/lorem"
	android:layout_weight="1" />

L'adapter que j'ai fait utilise le fait de stocker dans le Tag la convertview pour minimiser les traitements

if (convertView == null) {
wrapper = new ViewWrapper();
  convertView = (LinearLayout) mInflater.inflate (R.layout.item_glossaire, parent, false);
 wrapper.texte=(TextView)convertView.findViewById(R.id.texte);
 convertView.setTag(wrapper);
} else {
 wrapper=(ViewWrapper)convertView.getTag();
}

Ensuite je remplis cette liste avec des valeurs , et c'est là que le souci apparait , il y a des valeurs qui nécessittent une ligne , d'autres 2 d'autres 3 etc... en gros j'affiche du texte

et les textviews ne s'adaptent pas à la hauteur du texte que je mets dedans , c'est surtout visible si par exemple dans ma liste un élément n'est que sur une ligne , alors à force de monter et descendre toutes ls lignes ne font plus qu'il ligne et le texte sera tronqué.

J'ai essayé de faire un invalidate() sur mon textview mais le problème persiste.

je n'imagine pas que ce souci soit tout simple pour quelqu'un qui connait mais alors là je sèche complètement.

PEtite précision j'ai réussi à résoudre le pb si le textview qui contient le texte à hauteur variable est le dernier champ de mon item (ce que je mets dans la liste view) tout simplement en le mettant en layout_height="fill_parent" mais si ce n'est pas le dernier de l'item cela ne fonctionne pas.

J'espere que quelqu'un déjà confronté à ce souci pourra m'aider , merci d'avance.

Edited by tsylvai
Link to comment
Share on other sites

Ds ton TextView :

android:layout_height="wrap_content"

et vire le layout_weight !

La listeView devrait gérer le reste seule !

Dis nous ce que ca donne !

Link to comment
Share on other sites

Tout d'abord merci d'avoir répondu , et du coup je vais partager,

en fait comme ce que vous m'avez indiqué ne fonctionnait pas , j'ai refait un petit projet avec juste une listview pour pouvoir la poster sur le forum pour servir d'exemple , et en faisant sa je me suis apercu que j'avais juste simplifié un truc dans mon explication, en fait j'utilise une textview personnalisée (pour pouvoir afficher une autre fonte que la fonte standard)

et c'était la qu'il y avait un problème , j'avais oublié d'implémenter tous les constructeurs , du coup quand j'utilisait du gras par exemple il ne tenait pas compte de l'agrandissement de la taille de la police pour recalculer la hauteur,

j'ai implémenté tous les constructeurs du textview personnel et zou tout refonctionne , donc indirectement merci ...

;-))

A Une prochaine aventure...

Edited by tsylvai
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...