为RecyclerView打造通用adapter
来源:互联网 发布:免费虚拟手机号软件 编辑:程序博客网 时间:2024/05/20 08:25
上周我才开始接触RecyclerView,感谢我们鞠老师教会我使用。用了之后发现确实不错,但是我想把adapter封装一下,变一个通用的,岂不是用起来更方便?!言归正传下面来讲解一下recyclerview的使用。
如果有不会用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(); }
结尾
是不是用起来简单了很多,项目代码我就不上了,大家直接拷贝下来用就行。
有不明白的小伙伴可以留言
2 0
- 为RecyclerView打造通用adapter
- 为RecyclerView打造通用Adapter
- 为RecyclerView打造通用Adapter
- 打造通用的Adapter为RecyclerView服务
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- char,varchar的使用
- 学习网络编程推荐安装的软件
- Java栈(链式实现)
- Java解压zip文件
- 我和青春
- 为RecyclerView打造通用adapter
- Java队列(数组实现)
- JAVA概念之面向对象
- linux--静态库和动态库(3)
- Java循环队列(数组实现)
- 解压Zip文件出现IllegalArgumentException错误
- UML类图-时序图
- 清华大学校长邱勇在2016级本科生开学典礼上的讲话 | 在宁静中创造美好未来
- HTML 5 <center> 标签