• 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);
            }
        }

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

  • 相关阅读:
    单位根反演
    安卓第十三天笔记-服务(Service)
    安卓第十二天笔记-广播
    安卓第十一天笔记-Intent与inter-filter配置
    安卓第十天笔记-fragment
    安卓第九天笔记-Activity
    安卓第八天笔记--网络编程二
    安卓第七天笔记--网络编程一
    安卓第六天笔记--ListView
    安卓第五天笔记-对话框
  • 原文地址:https://www.cnblogs.com/xilinch/p/4088937.html
Copyright © 2020-2023  润新知