MVVM 封装adapter

//封装BaseAdapter
public abstract class BaseVmRecyclerAdapter<T,E extends ViewBinding> extends RecyclerView.Adapter<MvvmViewHolder<E>> {
    public List<T> mData;
    private final Context mContext;
    private OnItemClickListener mClickListener;
    private OnItemLongClickListener mLongClickListener;
    public BaseVmRecyclerAdapter(Context ctx, @Nullable List<T> list) {
        mData = list;
        mContext = ctx;
    }
    @Override
    public MvvmViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        E vbuild = getBuild(parent);
        final MvvmViewHolder holder = new MvvmViewHolder(vbuild);
        if (mClickListener != null) {
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mClickListener.onItemClick(holder.itemView, holder.getLayoutPosition());
                }
            });
        }
        if (mLongClickListener != null) {
            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    mLongClickListener.onItemLongClick(holder.itemView, holder.getLayoutPosition());
                    return true;
                }
            });
        }
        return holder;
    }

    @Override
    public void onBindViewHolder(MvvmViewHolder<E> holder, int position) {
        bindData(holder.getVbind(), position, mData.get(position));
    }

    public T getItem(int pos){
        return mData.get(pos);
    }

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

    public void add(int pos, T item) {
        mData.add(pos, item);
        notifyItemInserted(pos);
    }

    public void prepend(@NonNull List<T> items){
        mData.addAll(0, items);
        notifyDataSetChanged();
    }

    public void append(@NonNull List<T> items){
        mData.addAll(items);
        notifyDataSetChanged();
    }

    public void delete(int pos) {
        mData.remove(pos);
        notifyItemRemoved(pos);
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        mClickListener = listener;
    }

    public void setOnItemLongClickListener(OnItemLongClickListener listener) {
        mLongClickListener = listener;
    }


    abstract public void bindData(E vbind, int position, T item);

    public interface OnItemClickListener {
        void onItemClick(View itemView, int pos);
    }

    public interface OnItemLongClickListener {
        void onItemLongClick(View itemView, int pos);
    }

    public Context getmContext() {
        return mContext;
    }
    public void setData(@Nullable List<T> list) {
        mData.clear();
        if(list != null){
            mData.addAll(list);
        }
        notifyDataSetChanged();
    }

    public void remove(int pos){
        mData.remove(pos);
        notifyItemRemoved(pos);
    }
    public abstract E getBuild(ViewGroup parent);
}

这是holder

public class MvvmViewHolder<E extends ViewBinding> extends RecyclerView.ViewHolder {
    private E vbind;
    public MvvmViewHolder(@NonNull E viewBinding) {
        super(viewBinding.getRoot());
        vbind = viewBinding;
    }

    public E getVbind() {
        return vbind;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容