当ListView为空时Android显示文本

Dan*_*iel 32 android android-listview

我正在设置一个TextViewid,@android:id/empty以便在没有项目时显示消息ListView.但是,TextView即使ListView在项目出现之前有项目,也会显示此信息.

我怎样才能使它只在没有元素时显示ListView

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

<ListView
    android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:dividerHeight="1dp" >
</ListView>

<TextView 
    android:id="@android:id/empty"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/empty_list" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

PS:我正在使用a LoaderSimpleCursorAdaptera ListFragment.

dym*_*meh 99

我猜你是使用常规FragmentActivityListView它的内部.如果是,则必须ListView手动添加空布局.

例如

ListView lv = (ListView)findViewById(android.R.id.list);
TextView emptyText = (TextView)findViewById(android.R.id.empty);
lv.setEmptyView(emptyText);
Run Code Online (Sandbox Code Playgroud)

然后ListView当适配器为空时,您将自动使用此视图

如果你使用的是ListActivity你不需要打电话setEmptyView(),ListView因为ListActivity自动管理你.

  • 是的,在ListFragment中而不是使用空视图,你应该调用setEmptyText("empty listview"); 我不相信ListFragment支持自动设置空视图. (9认同)

Cod*_*der 10

设置a TextView并为其分配当ListView空白时要显示的内容:

ProjectListAdapter projectListAdapter = new ProjectListAdapter();
TextView empty=(TextView)findViewById(R.id.empty);
projectsListView.setEmptyView(empty);
Run Code Online (Sandbox Code Playgroud)

在我的xml文件中,我们编写以下代码

<TextView
      android:id="@+id/empty"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:gravity="center"
      android:text="Your text here"
      android:textColor="#FFFFFF" />
Run Code Online (Sandbox Code Playgroud)


Cir*_*716 5

我有这个问题。您必须在代码中显式设置emptyView。

更改您的TextView

<TextView 
    android:id="@+id/emptyResults"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/empty_list" />
Run Code Online (Sandbox Code Playgroud)

然后在onCreate()

listViewResults = (ListView) findViewById(R.id.list);
listViewResults.setEmptyView((LinearLayout) findViewById(R.id.emptyResults)); 
Run Code Online (Sandbox Code Playgroud)

上面的代码假定您ListView位于中LinearLayout