【Android群英传】学习笔记(三·一)
本篇笔记中,笔者将记录在ListView的使用的技巧
虽然5.X时代,RecyclerView在很多地方都在逐渐取代ListView,但ListView的使用范围还是很广泛的,它这万年老大哥的地位也不是轻易就能撼动的
一、使用ViewHolder模式提高效率
ViewHolder模式充分利用ListView的视图缓存机制,避免了每次在调用getView()的时候都去通过findViewById()实例化控件,据测试,使用ViewHolder模式将提高50%以上的效率
/**
* Created by monsterLin on 2016/9/2.
*/
public class FriendsAdapter extends BaseAdapter {
private List<Friend> friendList ;
private Context mContext ;
private LayoutInflater mInflater ;
public FriendsAdapter(List<Friend> friendList, Context mContext) {
this.friendList = friendList;
this.mContext = mContext;
mInflater=LayoutInflater.from(mContext);
}
@Override
public int getCount() {
return friendList.size();
}
@Override
public Object getItem(int position) {
return friendList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
FriendVHolder friendVHolder = null;
//判断是否缓存
if (convertView==null){
friendVHolder=new FriendVHolder();
//实例化布局
convertView=mInflater.inflate(R.layout.item_friend,null);
friendVHolder.item_friend_civ_photo= (CircleImageView) convertView.findViewById(R.id.item_friend_civ_photo);
friendVHolder.item_friend_tv_nick= (TextView) convertView.findViewById(R.id.item_friend_tv_nick);
friendVHolder.item_friend_tv_motto= (TextView) convertView.findViewById(R.id.item_friend_tv_motto);
convertView.setTag(friendVHolder);
}else {
//通过tag找到缓存的布局
friendVHolder= (FriendVHolder) convertView.getTag();
}
//设置布局中控件要显示的视图
friendVHolder.item_friend_civ_photo.setImageResource(friendList.get(position).getResId());
friendVHolder.item_friend_tv_nick.setText(friendList.get(position).getNick());
friendVHolder.item_friend_tv_motto.setText(friendList.get(position).getMotto());
return convertView;
}
public final class FriendVHolder{
public CircleImageView item_friend_civ_photo;
public TextView item_friend_tv_nick , item_friend_tv_motto;
}
}
二、设置项目间的分割线
系统提供了
dividerHeight和divider这两个属性帮助我们实现这一功能
android:divider="@color/colorAccent"
android:dividerHeight="8dp"
特殊情况下,当设置分割线为如下代码时,就可以把分割线设置为透明了
android:divider="@null"
三、隐藏ListView的滚动条
可以通过设置scrollbars进行设置
android:scrollbars="none"
四、取消ListView的点击效果
在Android 5.X以上是一个水滴反馈的效果
在Android 5.X以下则是一个改变背景色的效果,但可以通过listSelector属性来取消掉点击后的回馈效果
android:listSelector="#00000000"
当然,也可以直接使用Android自带的透明色来实现这个效果
android:listSelector="@android:color/transparent"
五、设置ListView要显示在第几项
ListView以Item为单位进行显示,默认显示在第一个Item,当需要指定显示的Item时,可以通过下面代码实现
listview.setSection(N); //N就是需要显示的第N个Item
当然类似方法还有scrollTo ,是瞬间完成的移动。除此之前,还可以使用如下代码实现平滑移动
listview.smoothScrollBy( distance, duration);
listview.smoothScrollByOffset(offset);
listview.smoothScrollToPosition(index);
【Android群英传】学习笔记(三·一)的更多相关文章
- Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)
当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...
- Android群英传笔记——第三章:Android控件架构与自定义控件讲解
Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...
- 【Android群英传】学习笔记(一)
本系列博客为笔者在学习<Android群英传>的学习总结 Android相关工具镜像连接:http://www.androiddevtools.cn/ Dalvik与ART Dalvik包 ...
- Android群英传笔记——第七章:Android动画机制和使用技巧
Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最 近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中 ...
- Android群英传笔记——第六章:Android绘图机制与处理技巧
Android群英传笔记--第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效 ...
- Android群英传笔记——第四章:ListView使用技巧
Android群英传笔记--第四章:ListView使用技巧 最近也是比较迷茫,但是有一点点还是要坚持的,就是学习了,最近离职了,今天也是继续温习第四章ListView,也拖了其实也挺久的了,list ...
- Android群英传笔记——摘要,概述,新的出发点,温故而知新,可以为师矣!
Android群英传笔记--摘要,概述,新的出发点,温故而知新,可以为师矣! 当工作的越久,就越感到力不从心了,基础和理解才是最重要的,所以买了两本书,医生的<Android群英传>和主席 ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- Android群英传笔记——第十章:Android性能优化
Android群英传笔记--第十章:Android性能优化 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对复杂的功能进行性能优化是创造高质 ...
- Android群英传笔记——第九章:Android系统信息和安全机制
Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个 ...
随机推荐
- JAVA 问题集中之处以及解决的办法
也许当你看的时候,你可能认为这些都是简单的问题,有什么好记的.其实不是,我认为,我们往往是因为粗心而造成的错误,当你在开发中碰到这些问题时,你能一下看出来是什么错误,达到提高效率.而且往往你把小的问题 ...
- ASP.NET中后台数据和前台控件的绑定
关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...
- 菜鸟快飞之JavaScript对象、原型、继承(二)
上一节写了创建对象的三种方法,而其中通过函数创建对象的方式又有三种模式,分别是工厂模式.构造函数模式.原型模式.而这三种模式最常用的则是原型模式.还是上栗子: 工厂模式: function Fun1( ...
- 【原】EasyUI ComboGrid 集成分页、按键示例
需求: 1.下拉框下拉时出现表格: 2.表格带分页功能: 3.可以使用向上键.向下键在表格中移动选择行数据: 4.可以使用回车键在表格中选中行数据: 5.在下拉框的文本框中输入内容,能查询表格: 6. ...
- OC多态
要点: 1.多种形态,引用的多种形态对于一个引用变量,可以指向任何类的对象.对于一个父类的引用(类与类之间有一种继承关系),可以指向子类,也可以指向本类,指向的类型不同.当通过此引用向对象发送消息,调 ...
- (七)Maven使用的最佳实践
这里说一下在使用Maven过程中不是必须的,但十分有用的几个实践,关键时刻或许能解决您的问题. 1.设置MAVEN_OPTS环境变量 通常需要设置MAVEN_OPTS的值为-Xms128m -Xmx5 ...
- C#初步应用
首先,此次编程是第一次尝试结对编程,我的结对对象博客园地址:http://www.cnblogs.com/cbb111/ 他的源代码链接:https://coding.net/u/cao1417146 ...
- linux 安装mysql数据库——yum安装法
mysql数据库有多种安装方式,本文只介绍在Linux服务器上最实用.最快捷的mysql server安装方法.一.Linux服务器yum安装(CentOS6.3 64位) 所有在服务器上执行的命令, ...
- JavaScript 解析 Django Python 生成的 datetime 数据 时区问题解决
JavaScript 解析 Django/Python 生成的 datetime 数据 当Web后台使用Django时,后台生成的时间数据类型就是Python类型的. 项目需要将几个时间存储到数据库中 ...
- 理解 neutron(15):Neutron linux-bridge-agent 创建 linux bridge 的简要过程
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...