Android BaseBindingAdapter

package com.iflytek.jzapp.base;

import android.content.Context;
import android.view.ViewGroup;

import androidx.recyclerview.widget.RecyclerView;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;

/**
 * RecyclerView的适配器,封装有上拉加载,下拉刷新
 *
 * @author: LiuChunqiu
 * @date:  2021/02/26
 */
public abstract class BaseBindingAdapter<T, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> {
    public List<T> mDataList;
    public Context mContext;

    public BaseBindingAdapter(Context context) {
        mContext = context;
        mDataList = new ArrayList<>();
    }

    @Override
    public int getItemCount() {
        return mDataList.size();
    }

    public T getItem(int position){
        return mDataList.get(position);
    }

    public List<T> getItems(){
        return mDataList;
    }

    @NotNull
    @Override
    public VH onCreateViewHolder(@NotNull ViewGroup parent, int viewType) {
        return onCreateVH(parent, viewType);
    }

    @Override
    public void onBindViewHolder(@NotNull VH holder, int position) {
        onBindVH(holder, position);
    }

    /**
     * 刷新数据
     *
     * @param list
     */
    public void onRefreshData(List<T> list) {
        if (mDataList != null) {
            mDataList.clear();
            mDataList.addAll(list);
            notifyDataSetChanged();
        }
    }

    /**
     * 加载更多
     *
     * @param list
     */
    public void onLoadMoreData(List<T> list) {
        if (mDataList != null && list != null) {
            mDataList.addAll(list);
            notifyDataSetChanged();
        }
    }

    /**
     * 创建ViewHolder的抽象方法
     *
     * @param parent
     * @param viewType
     * @return
     */
    public abstract VH onCreateVH(ViewGroup parent, int viewType);

    /**
     * 绑定ViewHolder的抽象方法
     *
     * @param holder
     * @param position
     */
    public abstract void onBindVH(VH holder, int position);

}
package com.iflytek.jzapp.cloud.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;

import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;

import com.iflytek.jzapp.BR;
import com.iflytek.jzapp.base.BaseBindViewHolder;
import com.iflytek.jzapp.base.BaseBindingAdapter;
import com.iflytek.jzapp.cloud.listener.OnItemClickListener;

/**
 * 通用Adapter
 *
 * @author: LiuChunqiu
 * @date: 2021/03/23
 */
public abstract class BaseCloudAdapter<T> extends BaseBindingAdapter<T, BaseBindViewHolder> {
    public final OnItemClickListener<T> mOnItemClickListener;
    public String mSearchKey = null;

    public BaseCloudAdapter(Context context, OnItemClickListener<T> onItemClickListener) {
        super(context);
        mOnItemClickListener = onItemClickListener;
    }

    @Override
    public BaseBindViewHolder onCreateVH(ViewGroup parent, int viewType) {
        ViewDataBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), getLayoutId(), parent, false);
        return new BaseBindViewHolder(binding);
    }

    @Override
    public void onBindVH(BaseBindViewHolder holder, int position) {
        ViewDataBinding binding = holder.getBinding();
        binding.setVariable(BR.itemData, mDataList.get(position));
        binding.setVariable(BR.itemClick, mOnItemClickListener);
        binding.setVariable(BR.itemPosition, position);
        binding.setVariable(BR.count, mDataList.size());
        binding.executePendingBindings();
    }

    /**
     * Item布局文件
     *
     * @return 布局id
     */
    protected abstract int getLayoutId();

    public void setSearchKey(String keyword) {
        this.mSearchKey = keyword;
    }
}
package com.iflytek.jzapp.base;

import androidx.databinding.ViewDataBinding;
import androidx.recyclerview.widget.RecyclerView;

/**
 * Adapter的ViewHolder
 *
 * @author: LiuChunqiu
 * @date:  2021/02/26
 */
public class BaseBindViewHolder extends RecyclerView.ViewHolder {
    ViewDataBinding mDataBinding;

    /**
     * 默认构造方法
     * @param binding ViewDataBinding
     */
    public BaseBindViewHolder(ViewDataBinding binding) {
        super(binding.getRoot());
        mDataBinding = binding;
    }

    /**
     * 获取ViewDataBinding
     * @return ViewDataBinding
     */
    public ViewDataBinding getBinding() {
        return mDataBinding;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值