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

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

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Android使用内容提供者方式进行存储
  3. android项目开发 统筹兼顾 需要考虑的内容
  4. android 之访问WebService显示手机号码归属地
  5. android 使用ContentProvider共享数据
  6. Android性能测试数据收集(全)
  7. Android(安卓)Webservices 返回多行多列数据(Dataset)
  8. Android(安卓)Studio故障处理之ADB not responding.
  9. ViewPager+PagerTabStrip实现页面选项卡滑动

随机推荐

  1. 深入解析Android关机
  2. Android中利用GridView实现水平和垂直均
  3. Android初学者学习之Android(安卓)屏幕适
  4. Android(安卓)Eclipse关联 android API d
  5. android - AsyncTask的使用
  6. android中AVD的使用
  7. mysql5.6及以下版本如何查询数据库里的js
  8. 解决Mysql5.7中文乱码的问题
  9. 详解MySQL主从复制实战 - 基于GTID的复制
  10. Centos 6.5下安装MySQL 5.6教程