RecyclerView适配器的简单封装-BaseAdapter
2018-01-25 11:14
417 查看
package com.beini.adapter; import android.support.annotation.IdRes; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.beini.bean.BaseBean; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; /** * Created by beini on 2017/2/18. */ public abstract class BaseAdapter<T> extends RecyclerView.Adapter<BaseAdapter.ViewHolder> implements View.OnClickListener, View.OnLongClickListener { private List<T> baseList; private int layoutId; public BaseAdapter(@NonNull BaseBean<T> baseBean) { this.baseList = baseBean.getBaseList(); this.layoutId = baseBean.getId(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false); ViewHolder holder = new ViewHolder(view); view.setOnClickListener(this); view.setOnLongClickListener(this); return holder; } @Override public int getItemCount() { if (baseList == null || baseList.size() == 0) { return 0; } return baseList.size(); } protected class ViewHolder extends RecyclerView.ViewHolder { View view; ViewHolder(View view) { super(view); this.view = view; } } public void addItem(T bean, int postion) { baseList.add(postion, bean); notifyItemInserted(postion); notifyItemRangeChanged(postion, baseList.size()); } public void removeItem(int postion) { baseList.remove(postion); notifyItemRemoved(postion); notifyItemRangeChanged(postion, baseList.size()); } protected TextView getTextView(@NonNull ViewHolder viewHolder, @IdRes int viewId) { return (TextView) viewHolder.view.findViewById(viewId); } protected ImageView getImageView(@NonNull ViewHolder viewHolder, @IdRes int viewId) { return (ImageView) viewHolder.view.findViewById(viewId); } protected Button getButton(@NonNull ViewHolder viewHolder, @IdRes int viewId) { return (Button) viewHolder.view.findViewById(viewId); } protected SimpleDraweeView getSimpleDraweeView(@NonNull ViewHolder viewHolder, @IdRes int viewId) { return (SimpleDraweeView) viewHolder.view.findViewById(viewId); } //item click 事件 private OnItemClickListener itemClickListener = null; public void setItemClick(OnItemClickListener itemClickListener) { this.itemClickListener = itemClickListener; } @Override public void onClick(View view) { if (itemClickListener != null) itemClickListener.onItemClick(view, (int) view.getTag()); } public interface OnItemClickListener { void onItemClick(View view, int position); } // item onlongClick 事件 private onItemLongClickListener itemLongClickListener = null; public void setOnItemLongClickListener(onItemLongClickListener onItemLongClickListener) { this.itemLongClickListener = onItemLongClickListener; } @Override public boolean onLongClick(View v) { if (itemLongClickListener != null) itemLongClickListener.onItemLongClick(v, (int) v.getTag()); return true; } private interface onItemLongClickListener { void onItemLongClick(View view, int position); } }
package com.beini.bean; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import java.util.List; /** * Created by beini on 2017/2/18. */ public class BaseBean<T> { private int id; private List<T> baseList; public BaseBean(@LayoutRes int id, @NonNull List<T> baseList) { this.id = id; this.baseList = baseList; } public int getId() { return id; } public void setId(@LayoutRes int id) { this.id = id; } public List<T> getBaseList() { return baseList; } public void setBaseList(@NonNull List<T> baseList) { this.baseList = baseList; } }
使用:
package com.beini.adapter; import android.support.v7.widget.RecyclerView; import com.beini.R; import com.beini.bean.BaseBean; import java.util.List; /** * Created by beini on 2017/2/18. */ public class HomeListAdapter extends BaseAdapter { private List<String> strings; public HomeListAdapter(BaseBean<String> baseBean) { super(baseBean); this.strings = baseBean.getBaseList(); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { holder.itemView.setTag(position); getTextView((ViewHolder) holder, R.id.text_home_list).setText(strings.get(position)); } }
HomeListAdapter homeListAdapter = new HomeListAdapter(new BaseBean<>(R.layout.item_home, functionList));
相关文章推荐
- Android中RecyclerView的适配器的简单封装
- RecyclerView的适配器简单封装,再也不用重复写适配器了
- 擦!RecyclerView的适配器确实比listview的简单些,因为tag都做了封装了
- Android RecyclerView简单通用适配器
- 单列模式,RecyclerView适配器封装,BroadcastReceiver介绍,Mvp+Retrofit+rxjava+okhttp框架的梳理总结
- RecyclerView 的简单封装
- RecyclerView的通用适配器,和滚动时不加载图片的封装
- RecyclerView适配器的封装,针对于要加载数据、没有更多,没有数据的情况的处理
- RecyclerViewAdapter的简单封装
- RecyclerView系列之一:打造RecyclerView通用的适配器BaseAdapter
- 实现一个列表只需一行代码-RecyclerView适配器暴力封装
- Android适配器之 V7扩展包 RecyclerView 的使用以及万能适配器的封装实现
- 【recyclerview封装】recycleview上拉加载 下拉刷新,加载更多,适配器全面封装。
- 自己封装的 recyclerView的 BaseAdapter,带item点击和长按事件。
- Android RecyclerView及适配器简单使用
- 对recyclerview的简单封装
- 简单封装RecyclerView的Adapter
- Materialdesign-recyclerview简单封装
- RecyclerView 上拉加载的简单封装
- 对RecyclerView的封装,使用简单,功能丰富