Vous pouvez avoir une vue vide sans ListActivity
! La bonne méthode est comme suit
D'abord ajouter un 'vide' affichage de votre mise en page XML ci-dessous votre liste
...
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<TextView
android:id="@+id/empty"
android:text="Empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
/>
...
Prochaine remplacer l' onContentChanged
méthode de votre activité et définir le vide de la vue de votre liste à votre vue vide:
@Override
public void onContentChanged() {
super.onContentChanged();
View empty = findViewById(R.id.empty);
ListView list = (ListView) findViewById(R.id.list);
list.setEmptyView(empty);
}
Ça y est! Android va prendre soin de masquer/afficher la liste et affichage vide lorsque vous mettez à jour la carte.
La Magie
De décider si la vue vide est affichée ou pas est gérée par la super-classe de ListView
, AdapterView
. AdapterView
enregistre un DataSetObserver
sur l'ensemble de l'adaptateur de sorte qu'il est notifiée à chaque fois que les données sont modifiées. Cela déclenche un appel à l' checkFocus
en AdapterView
qui contient les lignes suivantes
if (mEmptyView != null) {
updateEmptyStatus((adapter == null) || adapter.isEmpty());
}
et fixe le vide de vue de la visibilité selon que la carte est vide ou pas.