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 に答える