如何在listfragment中动态更改空视图的文本

时间:2015-02-11 14:01:04

标签: android android-listfragment empty-list

我有很多关于此问题的解决方案,但没有一个解决了我的问题。 我想要做的是,当我的列表视图为空时,如果默认的空文本视图显示(在xml中声明),则ok,但如果我想在扩展listfragment的活动中的某个点更改其文本,如果我的需要,让它可见...... 最近我试过这个:

public void setEmptyText(CharSequence emptyText) {
    ListView mListView = (ListView) NotificationsView.findViewById(android.R.id.list);
    View emptyView = mListView.getEmptyView();
        ((TextView) emptyView).setText(emptyText);
}

它没有给出任何错误,但它也没有解决问题。任何帮助将不胜感激

修改 这是我的listfragment布局

     <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:ignore="MergeRootFrame" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="vertical" >

        <ListView
            android:id="@id/android:list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/fragment_bg"
            android:divider="@null"
            android:dividerHeight="1dp"
            android:listSelector="@drawable/list_style" >
        </ListView>

        <TextView
            android:id="@id/android:empty"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/fragment_bg"
            android:text="No data" />
    </LinearLayout>

</android.support.v4.widget.SwipeRefreshLayout>

3 个答案:

答案 0 :(得分:1)

如果您使用ListFragment,则只需调用方法

即可
setEmptyText("Your empty text"):

系统会识别带有android:id="@id/android:empty" ID的视图标签,并会为您更改文字。无需引用它或进行任何演员表,它们都内置在ListFragment

答案 1 :(得分:0)

默认情况下,listview或适配器(不记得哪一个)使其不可见。致电emptyView.setVisibility(View.VISIBLE);以使其可见。

答案 2 :(得分:0)

这是如何更改文本视图的值:

TextView tv = (TextView) findViewById(R.id.empty);
tv.setText('yourText');