您的位置:首页 > 移动开发 > Android开发

Android ListView setEmptyView

2017-08-09 00:01 351 查看
当我们使用ListView或GridView的时候,当列表为空的时候,我们需要一个特殊的View来提示用户操作,于是就有了setEmptyView().下面看看如何使用:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/list_view" />
<TextView
android:id="@+id/empty_list_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="List view is empty"
android:visibility="gone" />
</LinearLayout>


ListView list= (ListView)findViewById(R.id.mylist);
TextView tv= (TextView)findViewById(R.id.myempty);
list.setEmptyView(tv);


显示复杂的View

当列表内容为空的时候就会直接显示出来

但是有时候我们提示的View很复杂,我们不想写在同一个文件中我可以想下面这样:

TextView emptyView = new TextView(context);
emptyView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
emptyView.setText(“This appears when the list is empty”);
emptyView.setVisibility(View.GONE);
((ViewGroup)list.getParent()).addView(emptyView);
list.setEmptyView(emptyView);


或者

emptyView = getLayoutInflater().inflate(R.layout.empty_view, null);
addContentView(emptyView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
list.setEmptyView(emptyView);


注意:

1.不要让提示的View在不改显示的时候显示出来了

emptyView.setVisibility(View.GONE);


2.setEmptyView()这个方法是有限制的,这个View必须在当前的View hierarchy的节点上,我们可以自己写在当前布局文件里面,也可以写在外面,但是需要把View添加到当前的View hierarchy的节点上。、

((ViewGroup)list.getParent()).addView(emptyView);
//或者
addContentView(emptyView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PAREN
a3ce
T));


完整示例:

TextView emptyView = new TextView(this);
emptyView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
emptyView.setTextColor(getResources().getColor(
R.color.TextTaskTypeColor));
emptyView.setText("没有厅店积分明细表信息");
emptyView.setVisibility(View.GONE);
emptyView.setGravity(Gravity.CENTER);
((ViewGroup) mListView.getParent()).addView(emptyView);
mListView.setEmptyView(emptyView);
// 设置数据
adapter = new ShopDetailReportAdapter();
mListView.setAdapter(adapter);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: