我有一个ListView
,里面可以有 0个自定义项(例如“我的下载”)。
是否有显示默认文字“ No download yet ”?
谢谢!
编辑:这是我的解决方案,
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);
答案 0 :(得分:36)
public void setEmptyView (View emptyView)
Since: API Level 1
Sets the view to show if the adapter is empty
在ListView实例上调用。
E.g。 mListView.setEmptyView(someView);
您可以动态构建视图,或者从xml中充气。
答案 1 :(得分:16)
除非我误解了您的问题,否则您也可以在布局中指定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>
答案 2 :(得分:1)
还有另一种方法BaseAdapter有方法isEnabled()。您需要创建自己的适配器,它将返回某些元素isEnabled(int position)为false。在这种情况下,这些元素将是不可选择的。可以很容易地修改它,当列表为空时只添加一个禁用元素。
但是,Alex Orlov的上述方法确实更好
答案 3 :(得分:0)
如果您正在使用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));