RecyclerView.Adapter封装,包括点击监听,长按监听,继承时不需要重新设置
2017-08-10 15:00
387 查看
自己封装个RecyclerView.Adapter,自己的才是最好的,恩,直接上代码:
1.首先是RecyclerView的ViewHolder:
大家发现我在封装这个的时候加了个itemView,别困惑~别着急~后面会解释干什么用的~
2.然后我们来封装Adapter
1.首先是RecyclerView的ViewHolder:
import android.support.v7.widget.RecyclerView.ViewHolder; import android.view.View; /** * RecyclerView.ViewHolder万能 * Created by ruin */ public abstract class BaseViewHolder extends ViewHolder { public View itemView; public BaseViewHolder(View view) { super(view); itemView = view; } }
大家发现我在封装这个的时候加了个itemView,别困惑~别着急~后面会解释干什么用的~
2.然后我们来封装Adapter
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.LinkedList; import java.util.List; /** * RecyclerAdapter 封装类 * Created by ruin */ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<BaseViewHolder> { protected Context context; protected LayoutInflater inflater; protected List<T> mDatas = new LinkedList<T>(); public OnItemClickListener<T> onItemClickListener; public OnItemLongClickListener<T> onItemLongClickListener; public BaseRecyclerAdapter(Context context) { this.context = context; inflater = LayoutInflater.from(context); } @Override public int getItemCount() { return mDatas == null ? 0 : mDatas.size(); } public T getItem(int position) { return mDatas.get(position); } public void addAll(List<T> datas) { mDatas.addAll(datas); notifyDataSetChanged(); } public void addItemTop(List<T> datas) { mDatas = datas; } public void remove(int position) { mDatas.remove(position); notifyDataSetChanged(); } public void clear() { mDatas.clear(); notifyDataSetChanged(); } @Override public long getItemId(int position) { return position; } public List<T> getDatas() { return mDatas; } @Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return getHolder(parent, viewType); } @Override public void onBindViewHolder(BaseViewHolder holder, final int position) { //还记得么~上面的itemView~用在这里啦 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onItemClickListener != null) { onItemClickListener.onItemClick(v, position, getItem(position)); } } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if (onItemLongClickListener != null) { onItemLongClickListener.onItemLongClick(v, position, getItem(position)); return true; } return false; } }); setDate(holder, position); } //继承类的时候只需要重写这个方法,做以前在onBindViewHolder方法里的事情就可以了 protected abstract void setDate(BaseViewHolder holder, int position); //做onCreateViewHolder的事情 protected abstract BaseViewHolder getHolder(ViewGroup parent, int viewType); // 点击事件接口 public interface OnItemClickListener<T> { void onItemClick(View view, int position, T model); } // 长按事件接口 public interface OnItemLongClickListener<T> { void onItemLongClick(View view, int position, T model); } public void setOnItemClickListener(OnItemClickListener<T> onItemClickListener) { this.onItemClickListener = onItemClickListener; } public void setOnItemLongClickListener(OnItemLongClickListener<T> onItemLongClickListener) { this.onItemLongClickListener = onItemLongClickListener; } }
相关文章推荐
- RecycleView设置点击的两种方式:adapter中的onBindViewHolder(VH,int)方法中进行;实现RecyclerView的addonItemTouchListerner()
- Android 解析RecyclerView(1)——带点击事件监听的通用Adapter
- IOS空数据页面,网络加载失败以及重新登陆View的封装(不需要继承)
- 封装RecyclerView Adapter 实现可添加多个header和footer,可设置loadingView,低耦合的多种布局。
- RecyclerView的Item设置点击监听事件
- RecyclerView的基本使用(优化图片加载、设置条目间距、设置Adapter、设置点击事件等)
- RecyclerView系列(二)下拉刷新、上拉加载、Item点击监听
- RecyclerView设置点击监听器OnClickListener
- RecyclerView的ViewHolder和Adapter的封装优化
- 解决 RecyclerView条目点击事件,分享自定义adapter
- 学习笔记之----Adapter的封装(RecyclerView)
- 给RecyclerView的item添加点击监听事件
- Android-RecyclerView-Item点击事件设置
- Android 封装RecyclerView的Adapter
- RecyclerView 的工具类,更方便的实现 Adapter,item 点击事件,更快的实现加载提示,分页加载。
- Android textview中某些字段设置点击监听
- RecyclerView.Adapter 的简单封装
- 简单封装RecyclerView的Adapter
- 继承RecyclerView.Adapter使用泛型遇到的问题
- RecyclerView的BaseAdapter的用法与条目监听的书写