http://my.eoe.cn/yaming/archive/879.html
当我们使用ListView或GridView的时候,当列表为空的时候,我们需要一个特殊的View来提示用户操作,于是就有了setEmptyView().下面看看如何使用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< 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 );
或
inflater = getLayoutInflater ();
emptyView = inflater . 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_PARENT ));
^_^ 欢迎留言
此处用三种QQ通讯录的图做展示:
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);