zoukankan      html  css  js  c++  java
  • listview 设置数组为空

    listview.setEmpty(View view);

    使用listView或者gridView时,当列表为空时,有时需要显示一个特殊的empty view来提示用户,今日对这个方法进行一下小结,书写的方式有三种:

    1.一般情况下,继承ListActivity,只要

    <ListView android:id="@id/android:list".../> 
    <TextView android:id="@id/android:empty.../>

    当列表为空时就会自动显示TextView

    2.如果继承Activity的话,想出现上面的效果,就需要手动代码

    <ListView android:id="@+id/list" .../> 
     <TextView android:id="@+id/empty" .../> 
    
    ListView list= (ListView)findViewById(R.id.mylist); 
    TextView tv= (TextView)findViewById(R.id.myempty); 
    
    list.setEmptyView(tv); 

    3.我们随性的写法,可用。

    private TextView tv ;
     private ListView listView;
    listView = (ListView) view.findViewById(R.id.ListView_nav_search_list_poi);
    listView.setAdapter(adapter);
    tv = new TextView(context);
    tv.setVisibility(View.GONE);
    tv.setText(R.string.map_favorite_no_data);
    ((ViewGroup)(listView.getParent())).addView(tv);
    listView.setEmptyView(tv );


    注意:这里还没有完,如果数据集合发生变更,从有数据到无数据,再有无数据到有数据时,视图会还停留在无数据的状态,不会显示listview,

           这里需要添加一个方法

    public void changePoiItems(List<PoiItem> poiItems){
            this.poiItems = poiItems;
            if(poiItems != null && poiItems.size() > 0){
                tv.setVisibility(View.GONE);
                listView.setVisibility(View.VISIBLE);
            }
            //改变数据集合
            if(adapter != null){
                adapter.changeData(poiItems);
            }
        }

    发生数据变更的时候,将视图状态改变下即可。

  • 相关阅读:
    HDU4366 Successor 线段树+预处理
    POJ2823 Sliding Window 单调队列
    HDU寻找最大值 递推求连续区间
    UVA846 Steps 二分查找
    HDU3415 Max Sum of MaxKsubsequence 单调队列
    HDU时间挑战 树状数组
    UVA10168 Summation of Four Primes 哥德巴赫猜想
    UESTC我要长高 DP优化
    HDUChess 递推
    HDU4362 Dragon Ball DP+优化
  • 原文地址:https://www.cnblogs.com/xilinch/p/4088937.html
Copyright © 2011-2022 走看看