<TextView
android:id="@android:id/empty"
style="@style/FacebookFont"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/no_result_found"
android:textColor="@color/white" />
这是空视图的xml代码。我按如下方式设置空视图:
list.setAdapter(adapter);
list.setEmptyView(findViewById(android.R.id.empty));
我在列表视图中有项目,甚至在填充listview之前也会显示空视图。 当listview包含一些项目时,我不希望显示该空视图。
请帮忙。
答案 0 :(得分:14)
如果您使用ListActivity
,则无需手动设置空视图。从代码中删除list.setEmptyView(findViewById(android.R.id.empty));
。
如下所示更改您的布局,如果列表中没有项目,则会自动添加EmptyView
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<ListView android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FF00"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
<TextView android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="No data"/>
</LinearLayout>
答案 1 :(得分:11)
如果MainActivity
未展开ListActivity
,则必须在设置适配器之前设置空视图。
试试这个
list.setEmptyView(findViewById(android.R.id.empty));
list.setAdapter(adapter);
对不起,迟到了!
替代方法:使您的活动从ListActivity扩展。并在列表布局中添加textview
,标识为android.R.id.empty
答案 2 :(得分:5)
试试这个
View view = getLayoutInflater() .inflate(<resource id of the empty view>, null);
ViewGroup viewGroup= ( ViewGroup)list.getParent();
viewGroup.addView(view);
list.setEmptyView(view);
list.setAdapter(adapter);
答案 3 :(得分:5)
有一些正确的答案,但是,我认为这是我发现的最佳方法:
View emptyView = getLayoutInflater().inflate(R.layout.empty_list_cart, null);
addContentView(emptyView, listView.getLayoutParams()); // You're using the same params as listView
listView.setEmptyView(emptyView);
listView.setAdapter(adapter);
答案 4 :(得分:0)
无论@dhawalSodhaParmar所解释的是正确的。但是当你看到答案被放下的方式时,会有一种混乱。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SampleActivity">
<ListView
android:id="@+id/list"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:divider="@null"
android:dividerHeight="0dp" />
<!-- Empty view is only visible when the list has no items. -->
<TextView
android:id="@+id/empty_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="NO DOCUMENTS AVAILABLE!"
android:textColor="#525252"
android:textAppearance="?android:textAppearanceMedium"
android:visibility="gone"/>
</RelativeLayout>
假设您已经有一个列表视图和适配器支持数据。假设一切正常,那么想要实现这个空列表视图屏幕的人必须如下所示: 步骤1: 修改现有的Activity XML文件,该文件具有我在此处使用的列表视图。您可以使用线性布局或相对布局,但由于灵活性,最好使用相对布局。像我写的一样的textView。
第2步: 转到Activity Java文件,然后转到setContentView
ListView emptyListView = (ListView) findViewById(R.id.list);
// set your adapter here
// set your click listener here
// or whatever else
emptyListView.setEmptyView(findViewById(R.id.empty_text_view));
那就是它,现在已经开始运行了!
答案 5 :(得分:0)
// first of all create a global variable of Text view
// which is displayed when the list is empty
private TextView mEmptyStateTextView;
//then in onCreate(Bundle savedInstanceState)
/Setting empty text view
mEmptyStateTextView=(TextView) findViewById(R.id.emptyview);
view.setEmptyView(mEmptyStateTextView);
//then in onLoadfinished method
mEmptyStateTextView.setText(R.string.no_earthquakes);