Android ListView:当没有项目时的默认文本

我有一个ListView ,可以有0个自定义项目 (如“我的下载”)。

无论如何显示默认文本“ 没有下载 ”?

谢谢 !

编辑 :这是我的解决scheme,

 TextView emptyView = new TextView(getApplicationContext()); emptyView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); emptyView.setTextColor(R.color.black); emptyView.setText(R.string.no_purchased_item); emptyView.setTextSize(20); emptyView.setVisibility(View.GONE); emptyView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); ((ViewGroup)getListView().getParent()).addView(emptyView); getListView().setEmptyView(emptyView); 

替代文字

Solutions Collecting From Web of "Android ListView:当没有项目时的默认文本"

 public void setEmptyView (View emptyView) Since: API Level 1 Sets the view to show if the adapter is empty 

调用你的ListView实例。

例如mListView.setEmptyView(someView);

您可以即时构build视图,或者从xml中充气。

除非我误解了你的问题,否则你也可以在你的布局中指定任何ID为“@android:id / empty”的视图元素,并自动为你处理。 例如:

 <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:visibility="visible"/> <LinearLayout android:id="@android:id/empty" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center"> <TextView android:text="@string/no_messages" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/textBoldLight"> </TextView> </LinearLayout> 

BaseAdapter有另一种方法isEnabled()。 你需要创build自己的适配器,它将返回某些元素isEnabled(int position)为false。 在这种情况下,这些元素将是不可选的。 修改列表很容易,只需添加一个禁用的元素即可。

但是,Alex Orlov上面介绍的方法肯定会更好

如果您使用的是Activity而不是ListActivity并且想要将空的重心(水平和垂直)设置为中心,则应该使用以下这些:

在你的布局中:

 <?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="@+id/contacts" android:layout_width="match_parent" android:layout_height="match_parent"/> <LinearLayout android:id="@android:id/empty" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/no_contacts_add_one"> </TextView> </LinearLayout> </LinearLayout> 

在你的活动中:

 ListView contacts = (ListView) view.findViewById(R.id.contacts); contacts.setEmptyView(view.findViewById(android.R.id.empty));