J'ai une liste de liste avec des éléments pouvant être marqués comme "Terminé". Il y a aussi un toggleboutton qui dit "cacher les articles cachés". p>
Cependant, lorsque je masque les éléments en réglant la configuration de visibilité (vue.gone), il reste encore de l'espace dans la liste .. p>
ne devrait pas être si difficile à basculer des éléments de liste dans une liste de liste? p>
7 Réponses :
Vous devez utiliser l'adaptateur de liste également ... P>
Tout cela est sur l'adaptateur de liste.
essayez-vous de cacher tout l'élément de la liste? Si oui, je suppose que la vue de la liste ne va pas comme ça parce qu'elle est toujours en train de calculer avec la même quantité d'éléments. Je ne pense pas que cela va simplement l'ignorer parce que c'est parti. P>
La solution propre consisterait à renvoyer un autre getcount code> et ignorez simplement les éléments que vous souhaitez masquer. Ou supprimer des éléments de la liste interne utilisée. Appelez
notifierdatastetchanged code> sur l'adaptateur lorsque vous avez modifié la quantité d'éléments de la liste. P>
Donc, gardez une liste séparée avec tous et uniquement les éléments vérifiés et fonctionnent avec n'importe quelle liste nécessaires à l'affichage des informations correctes. Elles sonne comme un plan.
Ne fonctionne pas du tout. Je retourne le bon élément et le nombre correct basé sur l'état bascule du bouton. Les éléments de la liste sont les éléments corrects, mais il existe toujours une grande lacune de WhitSpace. Pourrait-il être que les classes de titulaires sont toujours là?
NotifyDataSetSetchanged Code> déclenchera la liste pour appeler
greveView code> pour tous les éléments à l'aide de la valeur renvoyée
getcount code>. Cela devrait faire l'affaire. Mais je ne peux pas vous aider depuis que je ne connais aucun détail. On dirait qu'il y a quelque chose d'autre vraiment faux ...
Cette pièce fonctionne correctement, la hauteur de la liste n'est pas "rafraîchissante" maintient toujours l'espace au-dessus de la liste. Vraiment étrange.
Modification de l'androïde: layout_height = "Wrap_Content" à Android: Layout_height = "Fill_Parent" Correction du problème. Tests avec une liste longue .. Avec une liste courte, le même espace était au-dessus de la liste .. une erreur stupide .. p>
Merci à tous pour l'aide .. Tout fonctionne maintenant. p>
J'ai pu résoudre ce problème à l'aide de la solution de Knickedi et des commentaires sous elle. Je voulais juste montrer mon adaptateur relativement complet pour clarifier un peu.
J'ai le stockitem de classe avec des champs pour contenir une gamme de données pour un seul stock. Pour l'arrayatadapter personnalisé, le constructeur prend la liste complète des stockitems récupérés à partir d'une table de base de données et toutes les méthodes Ajouter / Supprimer que je peux ajouter à l'avenir fonctionnera également sur cette liste (MLIST). Cependant, je remplace GETView () et getcount () à lire à partir d'une deuxième liste (Mfilteredlist) produite à l'aide de la méthode FiltreList (): P>
@Override public StockItem getItem(int position) { return mFilteredList.get(position); }
Après avoir vérifié de nombreuses solutions, aucune des solutions n'a été résolue mon problème avec l'espace vide, alors j'ai décidé de trouver ma solution.
J'avais deux problèmes principaux: 1) J'ai eu un espace vide à cause de la vue que je fixais sa visibilité à disparaître 2) J'avais aussi diviseur de 12 dp, même si j'avais le premier problème résolu, j'ai toujours eu la hauteur de diviseur fixe de la solution ListView P>
P>
1.1) J'ai ajouté un booléen à Les données de la liste, pour notifier à l'adaptateur que des éléments sont ignorés p>
1.2) J'ai créé une disposition vide pour simuler un "élément sauté" p> seulement si l'élément est ignoré l'adaptateur gonfler à un vide Disposition Comme indiqué à l'étape précédente, j'avais toujours le problème de hauteur de séparateur p> 2) pour fixer la hauteur de séparateur, j'ai changé la hauteur du diviseur sur 0 au lieu de 12DP,
Chaque élément qui n'est pas ignoré J'ai ajouté une autre mise en page avec un arrière-plan transparent (la couleur de divier dans mon cas doit être transparente) et ajout de remplissage inférieur de 12DP p> par exemple l'un de mes articles P> <?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="@android:color/transparent"
android:orientation="vertical"
android:paddingBottom="12dp" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/quick_test_background_selector" >
<ImageView
android:id="@+id/advanced_test_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/done_step" />
<TextView
android:id="@+id/advanced_test_upper_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@id/advanced_test_image"
android:gravity="center_vertical"
android:text="ETAPE 1"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/advanced_test_lower_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/advanced_test_image"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@id/advanced_test_image"
android:gravity="center_vertical"
android:text="ETAPE 1"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/step_without_lower_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/advanced_test_image"
android:layout_alignTop="@id/advanced_test_image"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@id/advanced_test_image"
android:gravity="center_vertical"
android:text="123"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
</RelativeLayout>
</RelativeLayout>
View.Gone est en train de libérer de l'espace, mais les autres éléments auraient pu être confinés à leurs positions actuelles. Essaye ça. Dans le fichier de mise en page personnalisé (qui agit en tant que vue pour les éléments de la liste), P>
Supposons si x est l'élément UI que vous voulez être parti, w est l'élément ci-dessous x et y est l'élément ci-dessus x p>
Dans la disposition personnalisée de votre liste de liste, (en supposant que c'est une disposition relative) fixez le haut de W au bas de X., puis fixez le haut de l'élément X au bas de Y. P>
convertView = inflater.inflate(R.layout.custom_layout, parent, false); if (CONDITION) { holder.wholeLayout.getLayoutParams().height = 1; // visibility Gone not working && 0 height crash app. } else { holder.wholeLayout.getLayoutParams().height = RelativeLayout.LayoutParams.WRAP_CONTENT; }