在android中处理空ListView时遇到一些麻烦。这就是我所拥有的:
public class MainActivity extends ListActivity {
...
refreshList();
...}
public void refreshAlbumList(){
albumList=control.listAlbums();
if (albumList.length!=0){
ArrayAdapter<String> ap = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,albumList);
setListAdapter(ap);
}else{
//deal with empty list somehow, currently results in error
}
}
我尝试的是:
this.getListView().setEmptyView(findViewById(android.R.id.empty));
然后将一个id为空的TextView插入main_activity.xml 但结果是接管了屏幕,我看不到列表。
当前xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android1="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity" >
<ListView
android1:id="@id/android:list"
android1:layout_width="match_parent"
android1:layout_height="wrap_content"
android1:layout_weight="1" >
</ListView>
</LinearLayout>
答案 0 :(得分:2)
ListView调用ListAdapter#isEmpty方法来确定它是否应该显示/隐藏自身和空视图。因此,您将始终需要设置ListAdapter。
所以答案是始终创建ArrayAdapter并始终将其设置为ListView。在你的活动onCreate中调用ListView#setEmptyView方法。或者,您可以使用带有android:id =“@android:id / empty”属性的TextView,ListActivity将检测它并使用上述方法分配它。