针对recyclerView的adapter封装
2017-10-31 14:57
387 查看
public abstract class RecycleBaseAdapter<T, K extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<RecyclerView.ViewHolder> { protected Context mContext; protected List<T> dataList; protected LayoutInflater mInflater; protected RecycleViewAdapterListner<T> listner; public RecycleBaseAdapter(Context mContext, List<T> dataList, RecycleViewAdapterListner<T> listner) { this.mContext = mContext; this.dataList = dataList; this.listner = listner; mInflater = LayoutInflater.from(mContext); } public RecycleBaseAdapter(Context mContext, List<T> dataList) { this.mContext = mContext; this.dataList = dataList; this.listner = listner; mInflater = LayoutInflater.from(mContext); } protected View inFlaterView(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) { return mInflater.inflate(resource, root, attachToRoot); } @Override public K onCreateViewHolder(ViewGroup parent, int viewType) { return createViewholder(parent, viewType); } private T getItem(int position) { return dataList.get(position); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { bindViewholder(getItem(position), (K) holder, position); } @Override public int getItemCount() { return dataList.size(); } public abstract K createViewholder(ViewGroup parent, int viewType); public abstract void bindViewholder(T t, K holder, int position); }
public abstract class RecycleViewAdapterListner<T> implements RecycleViewAdapter<T>{
@Override
public void viewOnclick1(View view, int position, T t) {
}
@Override
public void viewOnclick2(View view, int position, T t) {
}
@Override
public void viewOnclick3(View view, int position, T t) {
}
@Override
public void viewOnclick4(View view, int position, T t) {
}
}
public interface RecycleViewAdapter<T> {
void viewOnclick1(View view, int position, T t);
void viewOnclick2(View view, int position, T t);
void viewOnclick3(View view, int position, T t);
void viewOnclick4(View view, int position, T t);
}
用法:
class MainIndexAdapter4 extends RecycleBaseAdapter<MainIndexBean.MainIndexInfo, MainIndexAdapter4.ViewHolder> {
public MainIndexAdapter4(Context mContext, List<MainIndexBean.MainIndexInfo> dataList) {
super(mContext, dataList);
}
@Override
public ViewHolder createViewholder(ViewGroup parent, int viewType) {
return new ViewHolder(inFlaterView(R.layout.report_time_recycle_adapter_layout4, parent, false));
}
@Override
public void bindViewholder(MainIndexBean.MainIndexInfo mainIndex, ViewHolder holder, int position) {
holder.ROER.setText(mainIndex.getROER());
}
class ViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.ROER)
TextView ROER;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}
相关文章推荐
- RecyclerView的ViewHolder和Adapter的封装优化
- 封装RecyclerView.Adapter
- Android中对RecyclerView Adapter封装解析
- 封装RecyclerView的基础适配器BaseAdapter
- Android RecyclerView(五)封装Holder与Adapter(Android 5.0 新特性)
- Android 对封装RecyclerView.Adapter讲解
- RecyclerViewAdapter的简单封装
- RecyclerView封装Adapter之添加头部和底部视图
- Android-多列表的项目(Rxjava+Rtrofit+Recyclerview+Glide+Adapter封装)之(二)网络层的封装
- Android 封装RecyclerView的Adapter
- RecyclerView.Adapter的封装,理解封装的过程
- Android-多列表的项目(Rxjava+Rtrofit+Recyclerview+Glide+Adapter封装)之(一)项目架构
- Android RecyclerView封装RecyclerAdapter及解决与ScrollView冲突
- Android 一起来封装一个 RecyclerViewAdapter
- 355_封装RecyclerView的Adapter
- RecyclerView.Adapter的优化与封装
- 封装RecyclerView Adapter 实现可添加多个header和footer,可设置loadingView,低耦合的多种布局。
- Android-多列表的项目(Rxjava+Rtrofit+Recyclerview+Glide+Adapter封装)之(一)项目架构
- Android 对ListView和RecyclerView的两个BaseAdapter封装分享
- RecyclerView Adapter 封装