Android ListView setEmptyView

本文介绍如何在Android应用中为ListView或GridView设置空视图,包括简单文本提示和复杂视图展示的方法。通过实例展示了如何根据列表是否为空切换不同的提示信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们使用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);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值