Android 5.1 Contacts源码分析(四):Contacts模块ListView Adapter结构
来源:互联网 发布:egd网络黄金是否合法 编辑:程序博客网 时间:2024/04/28 10:35
1. Contacts模块列表界面Adapter结构:
下图是联系人模块列表窗口对应的Adapter类图:
从上一篇文章Contacts模块Fragment结构中已知,联系人列表界面中的ListView的Adapter大部分继承自 ContactEntryListAdapter。
而从该类图中可知:
ContactEntryListAdapter最终继承自CompositeCursorAdapter并实现了PinnedHeaderListView.PinnedHeaderAdapter接口,也就是说界面中的ListView均为自定义的PinnedHeaderListView,例如在原生的Contacts主界面中,会根据联系人拼音的首字母分类,并显示在每个分类的第一个Item上(A,B,C…Z)。在ContactEntryListAdapter的父类IndexerListAdapter中有一个SectionIndexer(ContactsSectionIndexer) mIndexer成员变量,从源码中可以知道该类是用来管理联系人的每一个分类标签(A,B,C…Z)显示在ListView的哪个位置的。
public ContactsSectionIndexer(String[] sections, int[] counts) { …... this.mSections = sections; mPositions = new int[counts.length]; int position = 0; for (int i = 0; i < counts.length; i++) { …... mPositions[i] = position; position += counts[i]; } mCount = position;}
在ContactEntryListAdapter的newView中会创建一个ContactListItemView对象,在该类中动态绘制每一个联系人的头像,姓名,号码等信息,该类将会在后续内容中详细说明。
@Overrideprotected ContactListItemView newView(...) { final ContactListItemView view = new ContactListItemView(context, null); …...}
与Fragment类似,DefaultContactListAdapter:为联系人主界面PeopleActivity中DefaultContactBrowseListFragment的ListView的adapter;
其余的则跟联系人多选择界面有关。
很多优秀的第三方rom中,联系人模块的列表界面很统一,美观,其实个人觉得这应该归功于google的软件工程师们,他们的设计使得我们在二次开发时,只需要做少量的修改,就可以做出统一的效果了,至此,对Contacts模块的UI组成结构已经有了一个整体的认识,在接下来的文章中,我会详细介绍每个界面具体是如何实现的。
- Android 5.1 Contacts源码分析(四):Contacts模块ListView Adapter结构
- Android 5.1 Contacts源码分析(一):Contacts模块文件结构
- Android 5.1 Contacts源码分析(三):Contacts模块Fargment结构
- Android 5.1 Contacts源码分析(二):Contacts模块主要窗口
- Android Contacts源码分析
- Android 5.1 Contacts源码分析(五):PeopleActivity
- Android Contacts 联系人源码分析
- Android Contacts 联系人源码分析
- Android 5.0 Contacts源码分析
- Android 5.0 Contacts源码分析
- Android 5.0 Contacts源码分析
- Android Contacts 联系人源码分析
- Android 5.0 Contacts源码分析
- Android Contacts源码分析二——(PeopleActivity)分析
- Android Contacts模块基本知识
- Android 4.0 Contacts 通话记录界面的分析(源码)
- android源码分析--Mms、Contacts、Dialer
- Android Contacts数据库分析
- mac intellij IDEA快捷键
- Mysql常用功能操作实现
- java基础
- Android 开发第六弹:简易时钟(计时器)
- 《Hadoop: The Definitive Guide》读书笔记 -- Chapter 3 The Hadoop distributed Filesystem
- Android 5.1 Contacts源码分析(四):Contacts模块ListView Adapter结构
- IOS读取图片(转载)
- ibatis配置方法
- Android DownloadManager下载状态查询(2)
- 217.Contains Duplicate
- Eclipse JEE & ADE & Git & SVN & AXIS2/ Wtp
- 什么是BNF范式,什么又是EBNF范式? http://blog.csdn.net/designlife/article/details/3206543
- TDDL配置方法(数据源bean,分库分表,sequence)
- 数据库事务隔离级别与索引的优化