08 BaseAdapter 和ListView总结

时间:2023-03-08 15:08:58
08 BaseAdapter 和ListView总结

第八天 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()

  • 3返回值:true 只执行长点击事件 返回false 执行长点击和其他事件

  • 注意如果其子item设置了OnClickLisner

六,ListVIew数据为空时:

>//lv中没有数据时展示View,有数据不展示View
lv.setEmptyView(tv);

六, ListView的优化

  • 1,在xml布局中给ListView设置固定的宽高 match_parent 不建议使用wrap_content
  • 2,复用convertView 减少创建item布局对象次数 ( 当顶部item出去 新的item的就是使用顶部出去的item)
  • 3,使用ViewHolder 减少查找控件的次数(将控件打包ViewHolder,将ViewHolder放到convertView当convertView不为空时将ViewHolder取出)

七: 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);