Recyclerview 多种 item 布局的通用 Adapter MultiItemAdapter

来源:互联网 发布:淘宝扫码付款被骗 编辑:程序博客网 时间:2024/05/22 11:33

这个多种item的通用Adapter继承的CommonAdapter  是上一篇 打造 Recyclerview 的万能 Adapter  的内容

/** * 多种 item 布局的通用 adapter * 继承RecyclerView 的通用 CommonAdapter * Created by suwenlai on 16-12-29. */public abstract class MultiItemAdapter<T> extends CommonAdapter {    private MultiItemTypeSupport<T> mMultiItemTypeSupport;    /**     * 构造方法     * @param datas     * @param context     * @param multiItemTypeSupport  多种 item 布局支持接口     */    public MultiItemAdapter(List<T> datas, Context context, MultiItemTypeSupport<T> multiItemTypeSupport) {        super(datas, context, -1);        mMultiItemTypeSupport = multiItemTypeSupport;    }    @Override    public int getItemViewType(int position) {        return mMultiItemTypeSupport.getItemViewType(position, (T) mDatas.get(position));    }    @Override    public CommonHolder onCreateViewHolder(ViewGroup parent, int viewType) {        int layoutId = mMultiItemTypeSupport.getLayoutId(viewType);        CommonHolder holder = CommonHolder.getHolder(mContext, parent, layoutId);        return holder;    }}

MultiItemTypeSupport接口在这里  

 * 多种 item 布局支持接口 * Created by suwenlai on 16-12-29. */public interface MultiItemTypeSupport<T> {    /**     * 根据不同的 itemtype 获取不同类型的布局文件     * @param itemType     * @return     */    int getLayoutId(int itemType);    /**     * 根据不同 position 的 bean 生成不同的的 item 布局     * @param position     * @param t 多种不同 item 传入的 bean 数据     * @return     */    int getItemViewType(int position,T t);}

0 0
原创粉丝点击