• Android ListView setEmptyView


    http://my.eoe.cn/yaming/archive/879.html

    1
           当我们使用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> 
    
    1
    2
    3
    ListView list= (ListView)findViewById(R.id.mylist);  
    TextView tv= (TextView)findViewById(R.id.myempty);  
    list.setEmptyView(tv);  
    

    显示复杂的View

    当列表内容为空的时候就会直接显示出来
    但是有时候我们提示的View很复杂,我们不想写在同一个文件中我可以想下面这样:

    1
    2
    3
    4
    5
    6
    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);
    

    1
    2
    3
    4
    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在不改显示的时候显示出来了

    1
    emptyView.setVisibility(View.GONE);   
    

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

    1
    2
    3
    ((ViewGroup)list.getParent()).addView(emptyView);   
    //或者
    addContentView(emptyView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); 
    

    ^_^ 欢迎留言

    此处用三种QQ通讯录的图做展示:
    screenshot005.pngscreenshot007.pngscreenshot008.png

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
      1. TextView emptyView = new TextView(this);  
      2. emptyView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,  
      3.         LayoutParams.MATCH_PARENT));  
      4. emptyView.setTextColor(getResources().getColor(  
      5.         R.color.TextTaskTypeColor));  
      6. emptyView.setText("没有厅店积分明细表信息");  
      7. emptyView.setVisibility(View.GONE);  
      8. emptyView.setGravity(Gravity.CENTER);  
      9. ((ViewGroup) mListView.getParent()).addView(emptyView);  
      10. mListView.setEmptyView(emptyView);  
      11. // 设置数据  
      12. adapter = new ShopDetailReportAdapter();  
      13. mListView.setAdapter(adapter);  
  • 相关阅读:
    mysql in 的两种使用方法
    Cocos2d-x游戏中默认的AndroidManifest.xml的解析
    UVA 11551
    本周游戏体验:卧虎藏龙
    Android.mk各种文件编译汇总
    hdu 寒冰王座
    树的专题整理(二)
    leetcode 题解 || Swap Nodes in Pairs 问题
    接上SQL SERVER的锁机制(一)——概述(锁的种类与范围)
    SQL SERVER的锁机制(一)——概述(锁的种类与范围)
  • 原文地址:https://www.cnblogs.com/likeju/p/4793810.html
Copyright © 2020-2023  润新知