BaseAdapter封装

本文介绍了一个通用的Android RecyclerView适配器BaseBindingAdapter的基础实现。该适配器使用Data Binding简化了视图绑定过程,提供了onBindViewHolder方法用于绑定具体的数据项。通过抽象方法getViewHolderLayoutId和onBindMyViewHolder实现了灵活的布局配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package -.adapter;--

import android.content.Context;
import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;

/**

 * ---------------------------
 * <p>的基类
 */

public abstract class BaseBindingAdapter<T, H extends ViewDataBinding> extends RecyclerView.Adapter<BaseBindingAdapter.BindingViewHolder> {
    protected Context context;
    protected LayoutInflater mInflater;
    protected List<T> mDatas;

    public BaseBindingAdapter(Context context, List<T> datas) {
        this.context = context;
        this.mDatas = datas;
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public BindingViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        H binding = DataBindingUtil.inflate(mInflater,
                getViewHolderLayoutId(), parent, false);
        return new BindingViewHolder(binding);
    }

    @Override
    public void onBindViewHolder(BaseBindingAdapter.BindingViewHolder holder, int position) {
        T itemInfo = mDatas.get(position);
        H binding = (H) holder.getBinding();
        onBindMyViewHolder(holder, position, itemInfo, binding);
        holder.getBinding().executePendingBindings();               //解决闪烁问题
    }

    @Override
    public int getItemCount() {
        return mDatas == null ? 0 : mDatas.size();
    }

    /**
     * 获取 viewItem的 layoutId
     *
     * @return
     */
    protected abstract int getViewHolderLayoutId();



    /**
     * @param holder
     * @param position
     * @param itemInfo
     * @param binding
     */
    protected abstract void onBindMyViewHolder(BindingViewHolder holder, int position, T itemInfo, H binding);

    public class BindingViewHolder extends RecyclerView.ViewHolder {
        private ViewDataBinding binding;

        public BindingViewHolder(ViewDataBinding binding) {
            super(binding.getRoot());
            this.binding = binding;
        }

        public ViewDataBinding getBinding() {
            return binding;
        }
    }
}

转载于:https://my.oschina.net/u/1268043/blog/1616002

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值