2010-05-28 8 views
4

lorsque mon ListView est rempli par un adaptateur de matrice personnalisé, je vérifie un certain paramètre dans l'élément de liste en cours, et si elle est fausse, je veux retourner une ligne vide. Pour le moment, je le fais en gonflant un fichier xml vide, mais cela crée des diviseurs d'items de liste moche quand un certain nombre d'éléments ne devraient pas être montrés, et n'est évidemment pas la meilleure manière ;-)! J'ai essayé de retourner "null", mais il s'attend clairement à ce qu'une vue soit renvoyée. Y at-il quelque chose que je pourrais faire sans avoir à filtrer la liste qui est utilisée pour le ListView à l'avance (je veux le garder intact car je fais d'autres choses avec lui, aussi).Retourne une ligne vide dans Custom ArrayAdapter?

Merci,

Nick

Répondre

6

Pour résoudre le problème des séparateurs de ligne, retirez les séparateurs de ligne du ListView et de mettre votre propre à l'intérieur des éléments individuels .

+0

Wow, c'est une suggestion géniale - mais en même temps très évidente -. Je me sens stupide de ne pas avoir pensé à cela moi-même. Merci beaucoup! – Nick

+1

résolu le problème en utilisant le code de http://stackoverflow.com/questions/1914477/how-to-remove-line-inbetween-two-listviews-in-android – patrics

2

Gonfler un View et setVisibility-VIEW.GONE

+1

Merci pour votre réponse! Votre suggestion n'empêche pas les diviseurs d'éléments de liste grisés de s'accumuler lorsque beaucoup d'éléments d'une liste sont cachés avec 'VIEW.GONE' (ce que je voulais faire), mais je suppose qu'il n'y a pas de façon de faire ceci: -/... – Nick

0

Qu'est-ce qui est dans les lignes qui ne sont pas vides? Les images peuvent être remplacées par des png vides et transparents et les vues de texte peuvent être réglées sur "", etc.

0

View.Gone donnera une ligne de liste vide. essayez d'utiliser les paramètres de disposition et définissez la valeur zéro comme suit:

FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams (0,0); viewholder.programRow.setLayoutParams (layoutParams);

Layoutparams doit être utilisé comme selon viewgroup parent utilisé

1

Qu'est-ce à propos de:

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    //use a global Array to set the rows visible/hidden and return empty rows 
    if(disArray[position] == false) return new View(getContext()); 

    ... // continue with your getView() implementation 
    return convertView; 
} 

de mettre à jour l'utilisation ListView

adapter.notifyDataSetChanged(); 
Questions connexes