扩展BaseQuickAdapter使其支持ViewBinding

主要就是两个类:

package com.shenma.tvlauncher.adapter;

import androidx.viewbinding.ViewBinding;

import com.chad.library.adapter.base.BaseViewHolder;

public class BaseViewBindingHolder extends BaseViewHolder {

    public VB viewBind;

    public BaseViewBindingHolder(VB viewBind) {
        super(viewBind.getRoot());
        this.viewBind = viewBind;
    }

}
package com.shenma.tvlauncher.adapter;

import android.view.LayoutInflater;
import android.view.ViewGroup;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;

public abstract class BaseQuickViewBindingAdapter extends BaseQuickAdapter {

    public BaseQuickViewBindingAdapter() {
        super(null);
    }

    @Override
    protected VH onCreateDefViewHolder(ViewGroup parent, int viewType) {
        return getViewBinding(
                viewType,
                LayoutInflater.from(parent.getContext()),
                parent
        );
    }

    protected abstract VH getViewBinding(int viewType, LayoutInflater from, ViewGroup parent);

}

使用:

package com.shenma.tvlauncher.adapter;

import android.view.LayoutInflater;
import android.view.ViewGroup;

import com.shenma.tvlauncher.databinding.MainSortListItemBinding;
import com.shenma.tvlauncher.domain.HomeSort;

public class HomeSortAdapter extends BaseQuickViewBindingAdapter> {

    @Override
    protected BaseViewBindingHolder getViewBinding(int viewType, LayoutInflater from, ViewGroup parent) {
        return new BaseViewBindingHolder<>(MainSortListItemBinding.inflate(from));
    }


    @Override
    protected void convert(BaseViewBindingHolder helper, HomeSort item) {
        MainSortListItemBinding binding = helper.viewBind;
        binding.titleTextView.setText(item.getTypeName());
    }

}

你可能感兴趣的:(android)