我需要显示一个项目列表,这些项目是从数据库中读取的,可能没有项目,在这种情况下,我只想显示一个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)来更改默认的空视图