ListView 优化篇:从 BaseViewHolder 到面向 Holder 的思想
来源:互联网 发布:上海斑马公寓知乎 编辑:程序博客网 时间:2024/06/05 19:48
接上一篇:ListView 优化篇:从 BaseAdapter 到 BaseViewHolder
概述
在实际项目中,我们的项目功能越多,代码就越庞大,有时候一个类代码甚至上千行,各种组件之间耦合度很高,而当别人接手你开发的庞大的模块,维护起来也困难。
所以就想,能否将一个界面分成多个模块,将复杂的功能,慢慢分成一个个小模块,交个不同的人去实现
上篇,已经成功抽取了一个 BaseViewHolder 的基类,为了更好的说明问题,我做了一些小小的修改,代码如下:
public abstract class BaseViewHolder<T> { private View contentView; // 构造方法 public BaseViewHolder() { contentView = initView(); } // 初始化组件 public abstract View initView(); // 设置数据 public abstract void setData(T data); // 获取根布局 public View getContentView() { return contentView; }}
特点分析
现在这个基类有如下特点:
- 有自己的根布局
- 有自己的 init 方法
- 有对外界提供根布局的方法
所以,它完全就是一个独立的模块。我们可以用它来搭建各种模块。
以”开源中国“客户端为例,这个页面是线性布局,整个 Activity 的布局上是四个排列整齐的 FrameLayout 作为容器, 并且模块间划分非常清晰。所以每个部分都可以用一个 Holder 表示,分别是:HeadHolder、IntroHolder、InfoHolder、OptionalHolder,假设用 holder 实现 OptionalHolder 模块,就可以这样写:
public class OptionalHolder<Bean> { private View contentView; // 构造方法 public OptionalHolder() { contentView = initView(); } public View initView(){ View view = UIUtils.inflate(R.layout.layout_optional); return view; // 在此 find 控件 } // 设置数据 public abstract void setData(Bean data){ // 在此设置数据 } // 获取根布局 public View getContentView() { return contentView; }}
最后,在 Activity 中,便可以,将 holder 的 ContentView 添加到 Framelayout
// 取出父容器ViewGroup vgOptionalContainer = (ViewGroup) findViewById(R.id.layout_optional);// 创建 holderOptionalHolder holder = new OptionalHolder();// 将 holder 的根布局设置给父容器vgOptionalContainer .setData(data); vgOptionalContainer.addView(holder.getContentView());
0 0
- ListView 优化篇:从 BaseViewHolder 到面向 Holder 的思想
- ListView 优化篇:从 BaseAdapter 到 BaseViewHolder
- listview加载不同的item并实现holder优化
- 《黄帝内经》从养生到面向对象的思想!
- Android ListView使用Holder优化原理
- Android ListView使用Holder优化原理
- 吐司的移动,多次点击事件,holder优化ListView,更新ListView
- listview的Adapter性能优化之viewholder终极用法,无需生成holder内部类类
- 《Android从菜鸟到高手》——002“面向对象思想”在Android的基本应用
- 从实例面向对象的编程思想
- 安卓中面向MVC的开发(面向Holder的编程)
- 从面向过程到面向对象再到UML来看待英语学习,思想才是王道
- Android-面向Holder编程
- 面向Holder编程
- 面向holder编程
- 面向holder的编程,代码更清爽,管理更简单
- 从DIY想到的面向对象的思想
- 从哲学角度理解面向对象的思想
- JAVA的File类详解之目录列表器
- 第十三章 字符串
- Linux系统调用
- iOS -- 处理推送消息
- 程序国际化及动态处理文本
- ListView 优化篇:从 BaseViewHolder 到面向 Holder 的思想
- 详解 CSS 属性 - 伪类和伪元素的区别
- network
- PB中对SQL SERVER 2K 数据库的创建、备份与恢复
- 数据库三大范式
- 单例设计模式
- zookeeper原理
- Linux学习5之查找文件中的某个字符串并返回所在行号
- 认识Python