1

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

1 回答 1

2

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

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

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

于 2013-05-04T00:55:58.523 回答