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

时间:2010-11-03 15:29:09

标签: android listview

我有一个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);

alt text

4 个答案:

答案 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));