RecycleView
recycleView功能强大设置一下touchHelper可以支持侧滑删除,拖拽等。
类结构
RecycleView的Adapter必须要有一个ViewHolder与之对应今天我们所设计的就是尽量通用的一个Adapter。
ViewHolder的基类
public class BaseViewHolder extends ViewHolder{
BaseViewHolder()
findView()
}
Adapter的基类
public abstract class BaseAdapter <T,K extends BaseViewHolder> extends RecycleView.Adapter<K>{
List<T> mData
abstract createViewHolder()//创建holder
abstract convert(K holder, T t, int position, boolean isScrolling)//数据绑定
abstract difViewType()//获取类别
K createViewHolder(View view){
return (K)new BaseViewHolder(view)
}
}
MultiItemAdapter多Item的基类
public abstract class MultiItemAdapter <T, K extends BaseViewHoler> extends BaseAdapter<T,K>{
SpareArray<String> layouts//每个item的布局
SpareArray<Class> clazz;//每个item信息装配者
SpareArray<Map<String,Assembling>> assembler;//装配者实例
abstract getViewType(T t)
abstract getItemKey(T t)
getLayout()
addItem()
@Override conver(){
assembler.get(getViewType(mData.get(position)).get(getItemKey).convert();
}
}
Assembling的基类
public abstract class Assembling {
abstact convert()
}
MultiImplAdapter真正使用的Adapter
public class MultiImplAdapter extends MultiItemAdapter{
MultiItemAdapter(){
addItem(viewType, R.layout.id, FriendAssembing.class);
addItem(ViewType, R.layout.id, ContactsAssembing.class);
...
}
@Override getViewType(T t)
@Override getItemKey(T t)
}
真正装配者的类
public class FriendAssembing {
@Override convert(){
holder.findView().set()
}
}
public class FriendAssembing {
@Override convert(){
holder.findView().set()
}
}
总结
这是看了一天某SDK总结的伪代码,自己整理一下