BaseRecyclerViewAdapterHelper开源项目之BaseQuickAdapter源码学习BaseViewHolder扩展功能的实现代码学习(四)

本文探讨BaseRecyclerViewAdapterHelper的BaseQuickAdapter如何实现BaseViewHolder的可扩展性。通过2.8.5版本源码,分析onCreateViewHolder方法中使用反射技术创建ViewHolder的过程,以及getInstancedGenericKClass方法的作用。
摘要由CSDN通过智能技术生成

version:2.8.5

更多分享请看:http://cherylgood.cn

今天我们来分析下BaseQuickAdapter是如何实现BaseViewHolder的可扩展性的。

看代码

public abstract class BaseQuickAdapter<T, K extends BaseViewHolder> extends RecyclerView.Adapter<K> {
   

从类的定义我们可以看到两个范型类型T、K,T是我们的数据源的类型,K就是我们的viewHolder了,你可以使用已提供好的BaseViewHolder,也可以通过继承BaseViewHolder来进行扩展。

接下来我们分析的入口点就是代码中是如何创建ViewHolder的。ViewHolder的创建是在onCreateViewHolder生命回调方法中调用的,我们来看源码:

 @Override
    public K onCreateViewHolder(ViewGroup parent, int viewType) {
   
        Log.d(TAG,"#test onCreateViewHolder");
        K baseViewHolder = null;
        this.mContext = parent.getContext();
        this.mLayoutInflater = LayoutInflater.from(mContext);
        switch (viewType) {
   
            case LOADING_VIEW:
                baseViewHolder = getLoadingView(parent);
                break;
            case HEADER_VIEW:
                baseViewHolder = createBaseViewHolder(mHeaderLayout);
                break;
            case EMPTY_VIEW:
                baseViewHolder = createBaseViewHolder(mEmptyLayout);
                break;
            case FOOTER_VIEW:
                baseViewHolder = createBaseViewHolder(mFooterLayout);
                break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值