17
 <TextView
            android:id="@android:id/empty"
            style="@style/FacebookFont"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:text="@string/no_result_found"
            android:textColor="@color/white" />

これは空のビューの xml コードです。次のように空のビューを設定しています:

    list.setAdapter(adapter);
    list.setEmptyView(findViewById(android.R.id.empty));

それでもリストビューに項目があり、リストビューにデータが入力される前に空のビューが表示されます。リストビューにアイテムが含まれている場合、その空のビューを表示したくありません。

助けてください。

4

6 に答える 6

15

を使用している場合はListActivity、空のビューを手動で設定する必要はありません。コードから削除list.setEmptyView(findViewById(android.R.id.empty));します。

以下のようにレイアウトを変更するとEmptyView、リストにアイテムがない場合に自動的に追加されます。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="8dp"
        android:paddingRight="8dp">

    <ListView android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#00FF00"
            android:layout_weight="1"
            android:drawSelectorOnTop="false"/>

     <TextView android:id="@android:id/empty"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FF0000"
            android:text="No data"/>

</LinearLayout>
于 2013-04-11T13:26:59.580 に答える
11

MainActivity拡張していない場合は、アダプターを設定する前に空のビューを設定する必要がありますListActivity

これを試して

list.setEmptyView(findViewById(android.R.id.empty));
list.setAdapter(adapter);

返事遅れてすみません!

別の方法: アクティビティを ListActivity から拡張します。そして、textviewidでリストレイアウトにaを追加しますandroid.R.id.empty

于 2013-09-27T06:24:47.957 に答える
5

いくつかの正しい答えがありますが、これが私が見つけた最良のアプローチだと思います:

View emptyView = getLayoutInflater().inflate(R.layout.empty_list_cart, null);
addContentView(emptyView, listView.getLayoutParams()); // You're using the same params as listView
listView.setEmptyView(emptyView);
listView.setAdapter(adapter);
于 2014-04-23T21:10:18.933 に答える
0
// first of all create a global variable of Text view 
// which is displayed when the list is empty

private TextView mEmptyStateTextView;
    
//then in onCreate(Bundle savedInstanceState)
/Setting empty text view

mEmptyStateTextView=(TextView) findViewById(R.id.emptyview);

view.setEmptyView(mEmptyStateTextView);  

//then in onLoadfinished method

mEmptyStateTextView.setText(R.string.no_earthquakes);
于 2021-01-03T15:18:20.373 に答える