package com.lkh.multiadapter;
import android.support.annotation.LayoutRes;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
/**
* 列表单项布局与数据绑定
* Created by luokanghui on 2017/5/24.
*/
public abstract class ItemViewAdapter{
/**
* 返回列表单项View,如果View由资源layout加载而来,直接重写{@link #onGetLayoutId()}即可
* @param parent 父view,一般为RecyclerView
* @return 列表单项View
*/
public View onCreateView(ViewGroup parent){
return LayoutInflater.from(parent.getContext()).inflate(onGetLayoutId()
, parent, false);
}
/**
* 当RecyclerViewHolder创建成功后调用,只会调用一次
* @param viewHolder 单项view集合
*/
public void onCreate(RecyclerViewHolder viewHolder){
}
/**
* 返回单项布局的资源id,如果重写了{@link #onCreateView(ViewGroup)},则此方法可能失效
* @return 单项布局layout id
*/
@LayoutRes
protected abstract int onGetLayoutId();
/**
* 把数据与view进行绑定,滑动时都会调用
* @param viewHolder 单项view集合
* @param data 具体数据
* @param position 在列表中的位置
*/
public abstract void bindData(RecyclerViewHolder viewHolder, E data, int position);
/**
* 局部更新时调用
* @param viewHolder 单项view集合
* @param data 具体数据
* @param position 在列表中的位置
* @param payloads 局部更新标志,不会为空(isEmpty()==false)
*/
public void bindData(RecyclerViewHolder viewHolder, E data, int position, List