1.资源库
github.CymChad:BaseRecyclerViewAdapterHelper
版本号: 2.9.34
2.使用场景
因为一些老的 库 比如
cn.imlibo:FilePicker:v0.0.1_alpha 使用的是 2.9.34 的版本,库的资源比较大,使用3.0以上会修改太多东西 ,那我们自己的项目向老版本进行兼容可能修改的比较少。
3.库的兼容
/**
* des: DataBindBaseViewHolder
*
* @author: lsw
* @date: 2020/11/3
*/
public class DataBindBaseViewHolder extends BaseDataBindingHolder {
private ViewDataBinding binding;
public DataBindBaseViewHolder(@NonNull View itemView) {
super(itemView);
binding = DataBindingUtil.bind(itemView);
}
public ViewDataBinding getDataBinding() {
return binding;
}
}
public class BaseDataBindingHolder<BD extends ViewDataBinding> extends BaseViewHolder {
protected BD dataBinding ;
public BaseDataBindingHolder(View view) {
super(view);
dataBinding = DataBindingUtil.bind(view);
}
}
4.老库的使用和修改
使用代码和3.0.4的库的代码是一样
@Override
protected void convert(@NotNull DataBindBaseViewHolder dataBindBaseViewHolder, Object bean) {
ItemTjListNewBinding dataBinding = (ItemTjListNewBinding) dataBindBaseViewHolder.getDataBinding();
}
修改 2.9.34 库 修改修改
setNeInstance 方法为setData
和点击事件的方法
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
}
}
就版本 没有getItemPostion() 方法是私有的 ,我们可以用
getData().indexOf(bean);
@Override
protected void convert(@NotNull DataBindBaseViewHolder dataBindBaseViewHolder, List<String> bean) {
dataBinding.tvHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean selected = dataBinding.tvHead.isSelected();
// 这里获取到相应的index
int itemPosition = getData().indexOf(bean);
if(selected){
// 设置为不选中
dataBinding.tvHead.setSelected(!selected);
clickFiled.remove(itemPosition);
}else {
// 设置成选中
clickFiled.add(itemPosition);
dataBinding.tvHead.setSelected(!selected);
}