为RecyclerView打造通用adapter
2016-09-09 22:00
411 查看
上周我才开始接触RecyclerView,感谢我们鞠老师教会我使用。用了之后发现确实不错,但是我想把adapter封装一下,变一个通用的,岂不是用起来更方便?!言归正传下面来讲解一下recyclerview的使用。
如果有不会用RecyclerView的同学请参考我男神的这篇文章,讲的非常详细。本来也想写一篇来着,但是感觉没鸿洋大神写的好就放弃了,这章来说一下如何封装通用adapter。
有不明白的小伙伴可以留言
如果有不会用RecyclerView的同学请参考我男神的这篇文章,讲的非常详细。本来也想写一篇来着,但是感觉没鸿洋大神写的好就放弃了,这章来说一下如何封装通用adapter。
CommonAdapter类代码如下:
package com.czh.kuihuajingyingwang.adapters; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List; /** * Created by YYD on 2016-08-31. */ public abstract class CommonAdapter<T> extends RecyclerView.Adapter<CommonAdapter<T>.MyViewHolder> { //封装点击事件的方法。 public interface OnItemClickListioner{ public void onItemClick(int position); } OnItemClickListioner onItemClickListioner; public void setOnItemClickListioner(OnItemClickListioner onItemClickListioner) { this.onItemClickListioner = onItemClickListioner; } private Context mContext; private LayoutInflater mInflater; protected List<T> mDatas;//数据集合 protected final int mItemLayoutId; public CommonAdapter(Context context, List<T> mDatas, int itemLayoutId) { this.mContext = context; this.mInflater = LayoutInflater.from(mContext); this.mDatas = mDatas; this.mItemLayoutId = itemLayoutId; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(mItemLayoutId,parent,false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, final int position){ if(onItemClickListioner!=null){//为每一个item添加点击事件 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onItemClickListioner.onItemClick(position); } }); } } @Override public int getItemCount() { return mDatas.size(); } public class MyViewHolder extends RecyclerView.ViewHolder{ public MyViewHolder(View view){ super(view); } public <V extends View> V fMview( int id){ return (V)itemView.findViewById(id); } } public List<T> getDatas(){ return mDatas; } }
使用方法如下
recylerView = fView(R.id.buyNumRecylerView); final ArrayList<String>list = new ArrayList<>(); list.add("111"); list.add("222"); list.add("333"); buyNumRecylerView.setLayoutManager(new LinearLayoutManager(this)); buyNumRecylerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST)); buyNumRecylerView.setItemAnimator(new DefaultItemAnimator()); CommonAdapter commonAdapter = new CommonAdapter(PointBuyActivity.this,list,R.layout.adapter_pointbuy) { @Override public void onBindViewHolder(MyViewHolder holder, int position) { super.onBindViewHolder( holder, position); AppCompatTextView item_pointTv = (AppCompatTextView)holder.fMview(R.id.item_pointTv); AppCompatTextView item_moneyTv = (AppCompatTextView)holder.fMview(R.id.item_moneyTv); LinearLayoutCompat item_selImg = (LinearLayoutCompat)holder.fMview(R.id.item_selImg); item_pointTv.setText(getDatas().get(position).toString()); } }; commonAdapter.setOnItemClickListioner(this);//添加点击事件 buyNumRecylerView.setAdapter(commonAdapter); @Override public void onItemClick(int position) { Toast.makeText(PointBuyActivity.this,""+position,Toast.LENGTH_SHORT).show(); }
结尾
是不是用起来简单了很多,项目代码我就不上了,大家直接拷贝下来用就行。有不明白的小伙伴可以留言
相关文章推荐
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- Android打造自己的RecyclerView之通用Adapter(一)
- RecyclerView更全解析之 - 打造通用的万能Adapter
- 打造AbsListView、RecyclerView的通用Adapter
- 打造一个通用的 RecyclerView Adapter
- RecyclerView更全解析之 - 打造通用的万能Adapter
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- RecyclerView更全解析之 - 打造通用的万能Adapter
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用