如何动态更改列表片段中空视图的文本
How to dynamically change text of empty view in listfragment
我有很多关于此的解决方案,但其中 none 解决了我的问题。
我想要做的是,当我的列表视图为空时,如果显示默认的空文本视图(在 xml 中声明),它就可以了,但是如果我想在 [=] 中的某个点更改其文本怎么办20=] 根据我的需要扩展 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>
默认情况下,列表视图或适配器(不记得是哪一个)使其不可见。调用 emptyView.setVisibility(View.VISIBLE);
使其可见。
这是更改文本视图值的方法:
TextView tv = (TextView) findViewById(R.id.empty);
tv.setText('yourText');
如果您正在使用 ListFragment
,您需要做的就是调用方法
setEmptyText("Your empty text"):
系统将识别具有 android:id="@id/android:empty"
ID 的视图标签,并会为您更改文本。无需引用它或进行任何转换,它全部内置于 ListFragment
我有很多关于此的解决方案,但其中 none 解决了我的问题。 我想要做的是,当我的列表视图为空时,如果显示默认的空文本视图(在 xml 中声明),它就可以了,但是如果我想在 [=] 中的某个点更改其文本怎么办20=] 根据我的需要扩展 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>
默认情况下,列表视图或适配器(不记得是哪一个)使其不可见。调用 emptyView.setVisibility(View.VISIBLE);
使其可见。
这是更改文本视图值的方法:
TextView tv = (TextView) findViewById(R.id.empty);
tv.setText('yourText');
如果您正在使用 ListFragment
,您需要做的就是调用方法
setEmptyText("Your empty text"):
系统将识别具有 android:id="@id/android:empty"
ID 的视图标签,并会为您更改文本。无需引用它或进行任何转换,它全部内置于 ListFragment