10
votes

ListView affiche le message vide brièvement avant que les données soient chargées

J'ai créé un listfragment code> à l'aide de la mise en page suivante qui ajoute un textview code> pour afficher un message lorsque la liste est vide:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >

  <ListView android:id="@id/android:list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:drawSelectorOnTop="false"/>

  <TextView android:id="@id/android:empty"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/vsl_empty"
            android:gravity="center"
            android:layout_gravity="center"
            android:textColor="#8C8C8C" />
</LinearLayout>


2 commentaires

Utilisez-vous chargeur s?


Oui. Je crée l'adaptateur avec null pour l'argument du curseur, définissez l'adaptateur sur le listview , puis init le chargeur. Les loadermanager.Licharcallbacks s'occupent de la création du curseur.


3 Réponses :


1
votes

Que diriez-vous d'ajouter ce qui suit à la TextView xxx

au fichier de présentation XML, puis effectuez le texte visible si nécessaire.


1 commentaires

Réglage du TextView sur invisible ne fait pas de différence.



-1
votes

Vous devrez définir le textview visibilité to invisible , et une fois que vous avez chargé les données, c'est OnloadComplete - Vous devrez le définir comme la vue vide pour le listview en effectuant Setemptyview (textview) ; ;

Si vous le faites dans xml ou que vous le faites avant que vos résultats soient chargés, la vue s'affiche puisque la liste est effectivement vide. Vous devez donc attendre que les résultats soient chargés pour régler la vue vide.


1 commentaires

Comment définir le textview sur Invisible? Dans le XML, en utilisant l'identifiant Android: vide , le réglez sur Invisible ne fonctionne pas. Je suppose que c'est remplacé parce que l'identifiant a une signification particulière. Ce qui est super bizarre est, si à la fin de OnActivityCreated () i Call Setemptyview (null); La listeView disparaît et seulement la vue vide est montré!



9
votes

Les réponses fournies étaient sur la bonne voie. J'ai bien dû définir le textview sur invisible, mais l'emplacement correct est dans oncreateloader : xxx

aussi, il n'est pas nécessaire de faire La vue vide visible à nouveau: cela se fait automatiquement par le cadre.


2 commentaires

Merci cela a travaillé. Je devais faire la visible vide visible à nouveau à l'aide de listeView.visible


Vous ne devriez pas avoir besoin de faire la liste invisible (utilisez un point de vue) par exemple.