如何在android中处理空ListView?

时间:2013-05-04 00:18:20

标签: android listview adapter

在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>

1 个答案:

答案 0 :(得分:2)

ListView调用ListAdapter#isEmpty方法来确定它是否应该显示/隐藏自身和空视图。因此,您将始终需要设置ListAdapter。

所以答案是始终创建ArrayAdapter并始终将其设置为ListView。在你的活动onCreate中调用ListView#setEmptyView方法。或者,您可以使用带有android:id =“@android:id / empty”属性的TextView,ListActivity将检测它并使用上述方法分配它。

示例:https://gist.github.com/slightfoot/5519281