ListView 列表视图
一,特点:
>垂直滚动列表,是ViewGroup(容器),列表项使用Adapter填充
二,属性
>
android:divider="@drawable/qdhline" item之间的分割线 可以用颜色#RGB 还可以用图片
android:dividerHeight="5dp" 分割线的间距(高度)
三,填充方式
>1, 属性填充: android:entries="@array/books"
>2, 用ArrayAdapter
>3, 用SimpleAdapter
>4, 使用BaseAdapter
四,自定义适配器 BaseAdapter的用法
> * 1,创建一个类继承BaseAdapter
* 2,实现BaseAdapter里的方法
* getCount():获取数据总长度
* getItem(int position)获取当前下标item的数据
* getItemId(int position) 获取当前下标item的id 如果实体类里有从实体类里获取 没有 position
* getView(int position, View convertView, ViewGroup parent) 返回当前下标item的视图
*
五,ListView的事件
>1,点击事件 onItemClickListener()
>2,长点击事件(0.18s)onItemLongClickListener()
>返回值:true 只执行长点击事件 返回false 执行长点击和其他事件
>六,ListVIew数据为空时:
>//lv中没有数据时展示View,有数据不展示View
lv.setEmptyView(tv);
七: ListView 添加头(布局和原本的item样式不一致) 和添加尾
//获取头布局
View headerView = getLayoutInflater().inflate(R.layout.header_layout, null);
//头布局中控件的事件监听
ImageView ivHeader = (ImageView) headerView.findViewById(R.id.iv_header);
ivHeader.setOnClickListener(this);
//listView 添加头布局
lv.addHeaderView(headerView);
//listView 添加尾
View footView = getLayoutInflater().inflate(R.layout.footer_layout, null);
lv.addFooterView(footView);
六, ListView的优化
>1,在xml布局中给ListView设置固定的宽高 match_parent 不建议使用wrap_content
>2,复用convertView 减少创建item布局对象次数 ( 当顶部item出去 新的item的就是使用顶部出去的item)
>3,使用ViewHolder 减少查找控件的次数(将控件打包ViewHolder,将ViewHolder放到convertView当convertView不为空时将ViewHolder取出)