关于一个简单库 BaseAdapterHelper
baseAdapterHelper
1. 功能介绍
1.1 baseAdapterHelper
是对传统 BaseAdapter ViewHolder模式的一个封装。
1.2 基本使用
mListView.setAdapter(mAdapter = new QuickAdapter
R.layout.item_list, mDatas) {
@Override
protected void convert(BaseAdapterHelper helper, Bean item) {
helper.setText(R.id.tv_title, item.getTitle());
helper.setImageUrl(R.id.id_icon, item.getUrl());
helper.setText(R.id.tv_describe, item.getDesc());
helper.setText(R.id.tv_phone, item.getPhone());
helper.setText(R.id.tv_time, item.getTime());
}
});
1.3 优点
- 提供QuickAdapter, 省去类似getCount()等抽象函数书写,只需要关注从model到view的显示。
- BaseAdapterHelper中封装了很多为view操作的辅助方法,例如获取网络加载图片:
helper.setImageUrl(R.id.iv_photo, item.getPhotoUrl());
1.4 缺点 - 总体来说这个库比较简单,实现也有待改进。
2. 总体设计
由于base-adapter-helper 本质上仍然是ViewHolder模式,比较其设计图:
base-adapter-helper
ViewHolder Pattern
看到base-adapter-helper对传统的baseAdapter进行了初步的实现(QuickAdapter),并且其子类需要实现
convert()这一个方法,在这个方法中可以拿到BaseAdapterHelper,BaseAdapterHelper就相当于是
viewHolder,但它的内部有大量的辅助方法,用来设置view的数据和处理事件。
3. 详细设计
设计类图:
- 在baseQuickAdapter中实现了BaseAdapter中的通用的抽象方法;
- baseQuickAdapter中的两个泛型,T表示数据实体类Bean类型,H表示BaseAdapterHelper或其子类;
- QuickAdapter继承自BaseQuickAdapter,并且传入BaseAdapterHelper作为H泛型;
- EnhancedQuickAdapter 主要为convert()添加一个itemChanged参数,表示item对应数据是否发生变化;
- BaseAdapter为了获取view并进行内容、事件等相关操作的辅助类。
- 可自行继承BaseAdapterHelper来扩展,作为BaseQuickAdapter子类的H泛型。