Pour une raison quelconque, la vue vide, un TextView dans ce cas, apparaît toujours même lorsque ListView n'est pas vide. Je pensais que ListView détecterait automatiquement quand afficher la vue vide.
<RelativeLayout android:id="@+id/LinearLayoutAR"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<ListView android:id="@+id/ARListView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"></ListView>
<ProgressBar android:id="@+id/arProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"></ProgressBar>
<!-- Here is the view to show if the list is emtpy -->
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="No Results" />
</RelativeLayout>
Comment puis-je connecter correctement la vue vide?
Lorsque vous étendez
FragmentActivity
ouActivity
et nonListActivity
, vous aurez envie de jeter un oeil à:ListView.setEmptyView ()
la source
Comme le dit appsthatmatter, dans la mise en page quelque chose comme:
et dans l'activité liée:
Fonctionne également avec un GridView ...
la source
J'ai essayé toutes les solutions ci-dessus, j'ai résolu le problème, je publie ici la solution complète.
Le fichier xml :
Le textView ( "@ + id / emptyElement" ) est l'espace réservé pour la liste vide.
Voici le code de la page java:
N'oubliez pas de placer le emptyView après avoir lié l'adaptateur à listview.Mine ne fonctionnait pas pour la première fois et après avoir déplacé le setEmptyView après le setAdapter, il fonctionne maintenant.
Production:
la source
android:layout_below="@+id/lv_msglist"
pour emptyElementJe vous recommande fortement d'utiliser ViewStubs comme celui-ci
Voir l'exemple complet de Cyril Mottier
la source
Cela fonctionne clairement avec FragmentActivity si vous utilisez la bibliothèque de support. Testé ceci en construisant pour l'image API 17 ie 4.2.2.
la source
Code d'activité, il est important d'étendre
ListActivity
.Mise en page xml, l'identifiant dans les deux vues est important.
la source
Juste pour ajouter que vous n'avez pas vraiment besoin de créer de nouveaux identifiants, quelque chose comme ce qui suit fonctionnera.
Dans la mise en page:
Puis dans l'activité:
la source
J'ai eu ce problème. J'ai dû faire en sorte que ma classe étende ListActivity plutôt que Activity, et renommer ma liste dans le XML en
android:id="@android:id/list"
la source
Une solution par programme sera:
la source
Vérifiez d'abord que la liste contient quelques valeurs:
Si c'est OK, sinon utilisez:
la source
list
?