Android ListView setEmptyView

来源:互联网 发布:武汉seo编辑招聘 编辑:程序博客网 时间:2024/05/22 14:20

当我们使用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_PARENT)); 

完整示例:

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);  
原创粉丝点击