Android:如果ListView中没有项目,显示TextView的最佳方式是什么



我需要显示一个项目列表,这些项目是从数据库中读取的,可能没有项目,在这种情况下,我只想显示一个TextView,说"没有项目",我想我可以通过使用相对布局来实现这一点,列表和文本都在父项的中心,它们交替显示,但有比这更好的方法吗?

谢谢!

添加到Aleadam,Bill Mote

您可以随时对AdapterView对象调用AdapterView.setEmptyView(View v),以附加要用作空视图的视图。

摘录如下:

 empty = (TextView)findViewById(R.id.empty1);
  list = (ListView)findViewById(R.id.list1);
  list.setEmptyView(empty);

请确保ListView和TextView位于同一个父级中。

有关详细说明,请参阅本

如果您使用的是ListActivity,则这是默认行为。如果没有,则可以将ListView的可见性设置为GONE,将TextView的可见性设为VISIBLE。

Aleadam是对的。下面是一个支持他的答案的XML示例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    <ListView 
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        />
    <TextView 
        android:id="@id/android:empty" 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:textColor="@drawable/red"
        android:gravity="center_vertical|center_horizontal"
        android:textStyle="bold"
        android:text="@string/error_no_groups" 
        />
</LinearLayout>

Android开发者网站上的第一个教程解释了如何做到这一点:http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html

(查看步骤4)

代码段:

  • ListView和TextView可以看作是两个备选视图,一次只显示其中一个。当有注释要显示时,将使用ListView,而如果没有任何注释要显示,则将显示TextView(其默认值为"No notes Yet!",定义为res/values/strings.xml中的字符串资源)
  • 当ListAdapter没有ListView的数据时,会自动使用id为空的View。ListAdapter知道在默认情况下查找这个名称。或者,您可以通过在ListView上使用setEmptyView(view)来更改默认的空视图

最新更新