自定义BaseRecyclerAdapter适配器

自定义BaseRecyclerAdapter适配器

自定义BaseRecyclerAdapter封装了几个常见的方法,能力有限,请各位见谅,废话不多说,直接上代码。

BaseRecyclerViewAdapter

代码块语法遵循标准markdown代码,例如:


import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
/**
 * User : wy
 * Date : 2016/10/27
 */
public abstract class BaseRecyclerViewAdapter<T> extends RecyclerView.Adapter<BaseRecyclerHolderView>{

    protected Context mContext;
    protected List<T> mList;
    protected OnItemOnClickListener<T> itemOnClickListener;

    public BaseRecyclerViewAdapter(Context mContext, List<T> mList){
        this.mContext = mContext;
        if(mList != null){
            this.mList = mList;
        }
    }

    @Override
    public BaseRecyclerHolderView onCreateViewHolder(ViewGroup parent, int viewType) {
        return showOnCreateViewHolder(parent,viewType);
    }

    @Override
    public void onBindViewHolder(BaseRecyclerHolderView holder, int position) {
        showOnBindViewHolder(holder,position);
    }

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

    /**
     * 添加一个集合
     * @param data
     */
    public void additemList(List<T> data){
        mList.addAll(data);
        notifyDataSetChanged();
    }

    /**
     * 添加一个对象
     * @param data
     */
    public void addItemObject(T data){
        mList.add(data);
        notifyItemInserted(mList.size()-1);
    }

    /**
     * 添加一个对象,插入位置
     * @param postion
     * @param data
     */
    public void addItemObject(int postion,T data){
        mList.add(postion,data);
        notifyItemInserted(postion);
    }

    /**
     * 根据下标删除
     * @param postion
     */
    public void removeItem(int postion){
        mList.remove(postion);
        notifyItemRemoved(postion);
    }

    /**
     * 删除一个对象
     * @param data
     */
    public void removeItem(T data){
        if(data != null){
            mList.remove(data);
            notifyDataSetChanged();
        }
    }
    /**
     * 删除所有数据
     */
    public void remoceAll(){
        mList.clear();
        notifyDataSetChanged();
    }
    /**
     * 修改数据中某一个条数据
     * @param postion
     * @param data
     */
    public void updateItem(int postion,T data){
        mList.set(postion,data);
        notifyItemChanged(postion);
    }

    public void setOnItemClickListener(OnItemOnClickListener<T> itemListener){
        this.itemOnClickListener = itemListener;
    }
    public interface OnItemOnClickListener<T>{
        //点击item
        void onItemClick(View view,int postion,T data);
        //长按点击事件
        void onLongItemClick(View view,int postion,T data);
    }

    protected abstract void showOnBindViewHolder(BaseRecyclerHolderView holder, int position);

    protected abstract BaseRecyclerHolderView showOnCreateViewHolder(ViewGroup parent, int viewType);
}

BaseRecyclerHolderView

/**
 * User : wy
 * Date : 2016/10/27
 */
public abstract class BaseRecyclerHolderView extends RecyclerView.ViewHolder{

    public BaseRecyclerHolderView(View itemView) {
        super(itemView);
    }
}

MyRecyclerViewAdapter

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;

/**
 * User : wy
 * Date : 2016/10/27
 */
public class MyRecyclerViewAdapter extends BaseRecyclerViewAdapter<String> {


    public MyRecyclerViewAdapter(Context mContext, List<String> mList) {
        super(mContext, mList);
    }

    @Override
    protected void showOnBindViewHolder(BaseRecyclerHolderView holder, final int position) {
        HolderView holderView = (HolderView) holder;
        holderView.txtName.setText(mList.get(position));

holderView.txtName.setOnClickListener(new OnClicListener(position));

        holderView.txtName.setOnLongClickListener(new OnLongClicListener(position));




    }

    @Override
    protected BaseRecyclerHolderView showOnCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(mContext,R.layout.item,null);
        BaseRecyclerHolderView holderView = new HolderView(view);
        return holderView;
    }
/**
     * 为了解决条码错乱的问题
     */
    class OnClicListener implements View.OnClickListener{

        int posion;
        public OnClicListener(int pos){
            this.posion = pos;
        }

        @Override
        public void onClick(View v) {
            itemOnClickListener.onItemClick(v,posion,mList.get(posion));
        }
    }


    class OnLongClicListener implements View.OnLongClickListener{

        int posion;
        public OnLongClicListener(int pos){
            this.posion = pos;
        }

        @Override
        public boolean onLongClick(View v) {
            itemOnClickListener.onItemClick(v,posion,mList.get(posion));
            return false;
        }
    }
    public class HolderView extends BaseRecyclerHolderView{

        private TextView txtName;
        public HolderView(View itemView) {
            super(itemView);
            txtName = (TextView) itemView.findViewById(R.id.item);
        }
    }

}

MainActivity

adapter.setOnItemClickListener(new BaseRecyclerViewAdapter.OnItemOnClickListener<String>() {
            @Override
            public void onItemClick(View view, int postion, String data) {
                Toast.makeText(MainActivity.this,"点击:"+postion,Toast.LENGTH_LONG).show();
            }

            @Override
            public void onLongItemClick(View view, int postion, String data) {
                Toast.makeText(MainActivity.this,"长按:"+postion,Toast.LENGTH_LONG).show();
            }
        });

项目下载地址:
https://github.com/MakeWang/BaseRectclerAdapter.git

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值