base-adapter-helper

关于一个简单库 BaseAdapterHelper

baseAdapterHelper

1. 功能介绍

1.1 baseAdapterHelper
是对传统 BaseAdapter ViewHolder模式的一个封装。
1.2 基本使用
mListView.setAdapter(mAdapter = new QuickAdapter(MainActivity.this,
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泛型。
核心类源码分析