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);
08 BaseAdapter 和ListView总结的更多相关文章
- 使用自定义的BaseAdapter实现LIstView的展示
http://stephen830.iteye.com/blog/1141394 使用自定义的BaseAdapter实现LIstView的展示 实现以下功能点: 1.通过自定义的BaseAdapter ...
- 使用自定义的BaseAdapter实现LIstView的展示(转)
使用自定义的BaseAdapter实现LIstView的展示 原文链接 http://stephen830.iteye.com/blog/1141394 使用自定义的BaseAdapter实现LIst ...
- BaseAdapter使listview设置不同背景图片并添加selector
前段时间为了实现根据item不同的内容实现不同的背景色google了好久只找到了个隔行换色,通过自定义SimpleAdapter终于实现了此功能,但是定义了selector并没有触发点击效果.今天重新 ...
- Android 中万能的 BaseAdapter(Spinner,ListView,GridView) 的使用!
大家好!今天给大家讲解一下BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner,ListView,GridView)来填充数据的.而(Spinner,ListVie ...
- 基于BaseAdapter的Listview小Demo
ListView是android开发中比较常用的控件, 其中适配器模式可以选择: ArrayAdapter:简单易用,通常用于将数组或者List集合的读个包值封装成多个列表项 SimpleAdapte ...
- Android ListView使用BaseAdapter与ListView的优化 (转至 http://www.open-open.com/lib/view/open1339485728006.html)
在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点.读者可 ...
- 重写BaseAdapter实现ListView
public class BaseAdapterActivity extends BaseActivity { private ListView base_adapter_listView; priv ...
- ListView 自己定义BaseAdapter实现单选打勾(无漏洞)
(假设须要完整demo,请评论留下邮箱) (眼下源代码已经不发送.假设须要源代码,加qq316701116.不喜勿扰) 近期由于一个项目的原因须要自己定义一个BaseAdapter实现ListVIew ...
- Android之ListView&ViewPager模拟新闻界面
模拟新闻 APP 的界面 1)写 ListView 之前先写布局: 这里有两种 Item 的布局: <?xml version="1.0" encoding="ut ...
随机推荐
- [bzoj5016][Snoi2017]一个简单的询问
来自FallDream的博客,未经允许,请勿转载,谢谢. 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中 ...
- Linux下date使用
[root@host1 ~]# date #显示时间 2017年 06月 01日 星期四 17:02:59 CST 以指定格式显示时间: [root@host1 ~]# date +%Y%m%d 20 ...
- java随机生成字符串和校验
首先定义字符串 String a = "0123456789"; // 数字 String b = "abcdefghijklmnopqrstuvwxyz"; ...
- python3全栈开发-多进程的守护进程、进程同步、生产者消费者模式(重点)
一.守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes a ...
- vue中的eventBus
在vue2中,父子组件传递数据,父组件可以直接传递数据进子组件,而子组件通过调用父组件传递进来的方法,将自己的数据传递回去. 那兄弟组件之间,或者是兄弟组件的子组件之间如何传递呢? 当然vuex是一种 ...
- 吴恩达深度学习第4课第3周编程作业 + PIL + Python3 + Anaconda环境 + Ubuntu + 导入PIL报错的解决
问题描述: 做吴恩达深度学习第4课第3周编程作业时导入PIL包报错. 我的环境: 已经安装了Tensorflow GPU 版本 Python3 Anaconda 解决办法: 安装pillow模块,而不 ...
- 使用redis做缓存
redis常本用来作为缓存服务器.缓存的好处是减少服务器的压力,数据查询速度快.解决数据响应慢的问题. 添加缓存:只用redis的Hash数据类型添加缓存. 例如:需要在查询的业务功能中,添加缓存 1 ...
- Python中and(逻辑与)计算法则
在程序设计中,and称为逻辑与运算,也称布尔运算:1.and是在布尔上下文中从左到右计算表达式的值:2.0.''.[].().{}.None.False在布尔上下文中为假:其它任何东西都为真:3.如果 ...
- python学习之路前端-HTML
HTML概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以 ...
- PHP While 循环
PHP 循环 - While 循环 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块. PHP 循环 在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行.我们可以在代码中使用循 ...