Einstellung ein layout zur Nutzung als leere Ansicht für eine ListView im Fall adapter hat null Einträge in einer Aktivität
Wie Sie ein layout als leere Ansicht für eine listview, wenn der adapter hat null Elemente?
setEmptyView nicht funktioniert mit diesem code :
public class ZeroItemListActivity extends Activity {
private ArrayList<String> listItems=new ArrayList<String>();
private ListView mMyListView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mMyListView=(ListView) findViewById(R.id.MyListView);
mMyListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,listItems));
LayoutInflater inflator=getLayoutInflater();
View emptyView=inflator.inflate(R.layout.empty_list_item, null);
//Empty view is set here
mMyListView.setEmptyView(emptyView);
}
public void addItem(View v){
listItems.add("list Item");
mMyListView.invalidate();
}
}
Layouts verwendet : empty_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:id="@+id/Button01" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Empty List,Click to add items"></Button>
</LinearLayout>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<ListView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/MyListView"></ListView>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/AddItemsButton"
android:text="Add Items" android:onClick="addItem"></Button>
</LinearLayout>
Btw mMyListView.invalidate(); ist nicht der richtige Aufruf um die Liste zu aktualisieren, müssen Sie etwas haben, wie ((ArrayAdapter) mMyListView.getAdapter()).notifyDataSetChanged();
InformationsquelleAutor Suresh Manchi | 2010-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg, um dies getan ist, um den leeren Blick in den main.xml layout:
Dann, in Ihrem code, legen Sie Ihre leere Ansicht wie diese:
Den Grund, warum dein code nicht funktioniert ist, dass die ListView und Leerer Ansicht sein müssten, um die gleiche Ansicht bietet. Und Ihr Anruf an
inflate
übergeben Sie null als die Eltern, so sind Sie in verschiedenen heirarchies.emptyView
auf der gleichen Hierarchie derListView
können auch programmgesteuert ausgeführt werden, durch aufrufen((ViewGroup) mMyListView.getParent()).addView(emptyView)
.aber wie kann ich Zuhörer beim klicken " der Schaltfläche definiert, die in Leer anzeigen
InformationsquelleAutor Josh Clemm
Android Dev tutorial für die Liste Aktivität umfasst in diesem Thema:
http://developer.android.com/reference/android/app/ListActivity.html
Im Grunde haben Sie Ihre Klasse erweitern ListActivity. Legen Sie Ihre Liste id
@id/android:list
und den "leeren Blick" id@id/android:empty
in der gleichen XML-layout.Hoffe, das hilft 🙂
Diese Lösung ist gut für die ListActivity nur, wenn gute, aber nicht anwendbar auf die ursprüngliche Frage.
InformationsquelleAutor HappyGeisha
Wenn das aufblasen der Ansicht müssen Sie die Ansicht Elternteil ein Teil der Layout-Hierarchie statt übergeben Sie den Wert null in einigen Fällen.
Ersetzen
mit
dann setzen Sie den leeren Blick, wie Sie zuvor mit der.
InformationsquelleAutor francis994