2010-12-05 31 views
1

J'ai un listview dans lequel j'ai 2 textviews, un de ces textview contient zéro texte par défaut, mais peut être changé par l'utilisateur. le problème est que je dois le faire lorsque le textview est vide, la visibilité de celui-ci est définie sur GONE. J'ai 2 idées de comment cela pourrait fonctionner, soit en le définissant en XML ou en le définissant dans la base de données en quelque sorte.définition de la visibilité textview à GONE lorsqu'il n'y a pas de texte à afficher

public long createDate(String date) { 
    ContentValues initialValues1 = new ContentValues(); 
    initialValues1.put(KEY_DATE, date); 
    initialValues1.put(KEY_TIMESTAMP, "00:00"); 

    if(text==""){ 
     initialValues1.put(KEY_DICTTAG,View.GONE); //this does NOT work 
    }else{ 
     initialValues1.put(KEY_DICTTAG,text); 
    } 

    initialValues1.put(KEY_DICTALARMTIME, "0"); 
    initialValues1.put(KEY_DICTLISTIMAGE, R.drawable.list_icon); 
    return mdiktationsDb.insert(DATABASE_TABLE, null, initialValues1); 
} 

Je sais que le textview être vu coutume par l'utilisateur quand il n'y a pas de texte, mais je en ai besoin de ne pas être vu par le système pour ainsi dire. C'est parce que j'ai besoin que le texte d'horodatage soit centré dans la mise en page relative quand il n'y a pas de texte dans la vue textuelle dicttag. je ne pouvais pas poster la mise en page xml parce que je n'ai pas chambre

+0

Je pense que nous avons besoin de voir un peu plus de votre code. Quel est par exemple 'initialValues1'? Un peu plus de contexte s'il vous plaît :) – Nailuj

+0

j'ai mis à jour mon poste maintenant;) – Emil

Répondre

3

Il est un peu difficile de ce que le problème réel est, mais va ici ....

Tout d'abord, êtes-vous sûr que votre instruction if travaille correctement? Vous comparez une chaîne en Java avec ==. Je ne sais pas où text est mais utiliser if (text.equalsIgnoreCase("")) à la place.

Deuxièmement, TextView.setVisibility(View.GONE) sur votre TextView devrait fonctionner comme prévu en supposant que vous le manipulez sur le thread principal de l'interface utilisateur. Vous pouvez toujours remplacer votre adaptateur ListView et créer un adaptateur personnalisé et y effectuer vos opérations de visibilité pour chaque élément de ListView. Il y a beaucoup de publications et de tutoriels pour le faire.

+0

comment puis-je en utilisant TextView.setVisibility (View.GONE) sur 1 élément spécifique dans ma liste? sans faire un adaptateur custum? – Emil

+0

Je n'ai rien fait de tel, je fais toujours mon adaptateur personnalisé car il me donne un contrôle total d'une manière élégante. – glr

+0

@emil écriture adaptateurs personnalisés est bon pour la santé de tout développeur Android. Sans peur! – Cristian

0

txt.setVisibilité (View.GONE) pour masquer txt.setVisibility (View.VISIBLE); pour le spectacle

1

Essayez if (text.equals ("")) au lieu de if (text == "")