Hinzufügen und entfernen einer TextView dynamisch in Android
Habe ich ein FrameLayout die eine TextView
auf der Spitze eines ListView
. Jetzt, in der MainActivity
nach Ausführung einige code, ich überprüfe, ob die ListView
leer ist. Wenn es so ist, zeige ich die TextView
wenn nicht, Entferne ich den TextView
.
Der code ist wie folgt:
Folgenden ist die main.xml Datei:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/flMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tvAddItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Add some subjects"
android:textSize="20sp" />
<ListView
android:id="@+id/ItemsList"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" />
</FrameLayout>
In der MainActivity-Klasse, ich Tue das folgende:
MainActivity.java
TextView tvNoItem = (TextView) findViewById(R.id.tvAddItem);
ListView subListView = (ListView) findViewById(R.id.itemsList);
FrameLayout fl = (FrameLayout) findViewById(R.id.flMain);
ArrayList<Item> itemsList;
//some code
if(itemsList.isEmpty()) {
fl.addView(tvNoItem);
} else {
fl.removeView(tvNoItem);
}
Nun, wenn ich es laufen, und ich fügen Sie einige Elemente in der Liste, die TextView
(tvNoItem) entfernt wird, in der Tat. Aber alles, was ich sehe ist eine leere Liste, die Liste der Elemente, die nicht sichtbar sind. [BTW, die Liste ist in Ordnung. Wenn ich entfernen Sie die TextView
aus main.xml
, ich kann sehen, all die Elemente der Liste.] Bitte helfen Sie.
textView.setVisibility(View.GONE)
Das habe ich versucht. Es tut die gleiche Sache. Erhalte ich eine leere Aktivität.
InformationsquelleAutor Born Again | 2013-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nutzen Sie nicht
ListView
's emptyView option.Hier ist ein schöner Beitrag, zu zeigen, leeren Blick, während Ihr adapter ist leer. Es wird automatisch angezeigt, wenn Ihr Adapter die Quelle ist leer.
Android – ListView => setEmptyView()
Brauchen Sie nicht zu überprüfen, ob Sie die Datenquelle (
ArrayList
) ist leer, android-framework kümmert sich um alle aus-und einblenden der Umsetzung.Rufen Sie
setEmptyView()
rufen Sie vorsetAdapter()
auf dieListView
.InformationsquelleAutor Adil Soomro
InformationsquelleAutor Tushar Pandey
Anstelle von hinzufügen und entfernen, die TextView versuchen, sich zu verstecken und zeigen Sie es. Verwenden Sie für die Ansicht.SICHTBAR und ANZEIGEN.WEG Eigenschaften:
Hoffe, das hilft.
InformationsquelleAutor Adrián Rodríguez
Stattdessen Hinzufügen/Entfernen versuchen, Ändern Sie die Vissibility status.
InformationsquelleAutor Gunaseelan
Tatsächlich gibt es eine Tipps & tricks zu zeigen, ein Blick in, wenn die
listView
leer istEinen
ViewStub
ist eine unsichtbare, Größe null Anzeigen, die verwendet werden können, zu faul aufzupumpen, layout-Ressourcen zur Laufzeit.Das layout@layout/empty
wird nur aufgeblasen, wenn dieViewStub
Sichtbarkeit ändernView.VISIBLE
. Sobald die@layout/empty
view-Hierarchie ist aufgeblasen, es ersetzt dieViewStub
im globalen layout.ViewStub Dokumentation
Quelle
InformationsquelleAutor Sieryuu
1) Erstens, es gibt ein problem mit Ihrem code. Ihre
tvNoItem
ist schon definiert in xml-layout, so sollten Sie nicht fügen Sie es wieder. Sie nur das hinzufügen von Ansichten, die dynamisch erstellt werden, z.B.Sollten Sie wirklich nur auf dem textview xml mit
android:visibility="gone"
sichtbar machen, wenn Sie wollen.2) Verwenden
LinearLayout
stattFrameLayout
wenn Sie möchten, dass der textview auf dein listview. In Ihrem listview ändernandroid:layout_height="0dip"
zuandroid:layout_height="wrap_content"
, und entfernen Sie die layout_weight.InformationsquelleAutor Neoh
InformationsquelleAutor Adam
Bevor erste Blick auf die dynamische layouts zurücksetzen ersten, die
Obigen Zeilen sind für mich gearbeitet um zu verhindern, dass Duplikate dynamisch hinzufügen textviews in das lineare layouts
InformationsquelleAutor Venkatesh