package com.freelib.multiitem.adapter.holder; import android.databinding.ViewDataBinding; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; /** * 数据绑定ViewHolderManager * Created by free46000 on 2017/4/6. */ public class DataBindViewHolderManager<T> extends BindViewHolderManager<T> { @LayoutRes private int itemLayoutId; private ItemBindView<T> itemBindView; /** * @param itemLayoutId item 布局文件资源id * @param bindVariableId 需要绑定一个VariableId时使用本构造函数 */ public DataBindViewHolderManager(@LayoutRes int itemLayoutId, int bindVariableId) { this(itemLayoutId, (dataBinding, data) -> dataBinding.setVariable(bindVariableId, data)); } /** * @param itemLayoutId item 布局文件资源id * @param itemBindView item数据绑定回调 可以自定义绑定逻辑 */ public DataBindViewHolderManager(@LayoutRes int itemLayoutId, @NonNull ItemBindView<T> itemBindView) { this.itemLayoutId = itemLayoutId; this.itemBindView = itemBindView; } /** * 绑定数据到视图 {@link ItemBindView} * * @param dataBinding item视图对应dataBinding类 * @param data 数据源 */ @Override protected void onBindViewHolder(ViewDataBinding dataBinding, T data) { itemBindView.onBindViewHolder(dataBinding, data); } @Override protected int getItemLayoutId() { return itemLayoutId; } /** * item数据绑定回调接口,在回调方法中自定义绑定逻辑 */ @FunctionalInterface public interface ItemBindView<T> { void onBindViewHolder(ViewDataBinding dataBinding, T data); } }