Aus irgendeinem Grund wird die leere Ansicht, in diesem Fall eine Textansicht , immer angezeigt, auch wenn die ListView nicht leer ist. Ich dachte, die ListView würde automatisch erkennen, wann die leere Ansicht angezeigt werden soll .
<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>
Wie kann ich die leere Ansicht richtig anschließen?
Wenn Sie erweitern
FragmentActivity
oderActivity
und nichtListActivity
, werden Sie einen Blick nehmen wollen:ListView.setEmptyView ()
quelle
Wie appsthatmatter sagt, im Layout so etwas wie:
und in der verknüpften Aktivität:
Funktioniert auch mit einem GridView ...
quelle
Ich habe alle oben genannten Lösungen ausprobiert. Ich habe das Problem gelöst. Hier veröffentliche ich die vollständige Lösung.
Die XML-Datei :
Die Textansicht ( "@ + id / emptyElement" ) ist der Platzhalter für die leere Listenansicht.
Hier ist der Code für die Java-Seite:
Denken Sie daran, die leere Ansicht zu platzieren, nachdem Sie den Adapter an listview gebunden haben. Mine funktionierte zum ersten Mal nicht und nachdem ich die setEmptyView nach der setAdapter verschoben habe, funktioniert sie jetzt.
Ausgabe:
quelle
android:layout_below="@+id/lv_msglist"
für emptyElementIch empfehle Ihnen dringend, ViewStubs wie diesen zu verwenden
Siehe das vollständige Beispiel von Cyril Mottier
quelle
Dies funktioniert eindeutig mit FragmentActivity, wenn Sie die Support-Bibliothek verwenden. Getestet durch Erstellen für API 17, dh 4.2.2 Image.
quelle
Aktivitätscode, es ist wichtig zu erweitern
ListActivity
.Layout XML, die ID in beiden Ansichten sind wichtig.
quelle
Nur um hinzuzufügen, dass Sie nicht wirklich neue IDs erstellen müssen, funktioniert so etwas wie das Folgende.
Im Layout:
Dann in der Aktivität:
quelle
Ich hatte dieses Problem. Ich musste meine Klasse dazu bringen, ListActivity anstelle von Activity zu erweitern, und meine Liste in XML umbenennen in
android:id="@android:id/list"
quelle
Eine programmatische Lösung wird sein:
quelle
Überprüfen Sie zunächst, ob die Liste einige Werte enthält:
Wenn es dann OK ist, verwenden Sie andernfalls:
quelle
list
?