Android 为Recyclerview添加滚动监听事件,以及为它每一个item设置点击监听事件
来源:互联网 发布:数据人生txt全集下载 编辑:程序博客网 时间:2024/06/05 09:34
虽然recyclerview为 整个recyclerview设置了一些监听事件,但是没有自带为其中的item设置点击事件
本文将提供一种recyclerview中item的点击监听事件的实现方法
先看看效果图:
第一,你需要一个接口:
public interface OnItemClickListener { void OnItemclick(View view,int position);}
第二,再适配器中 声明一个该接口的引用
public class Adapter extends RecyclerView.Adapter<ViewHolderr> { private LayoutInflater layoutInflater; private Context context; private String[] datas; private OnItemClickListener onItemClickListener;//声明一个接口的引用 public Adapter(Context context, String[] datas) {//构造函数传入Context对象和数据源 this.layoutInflater=LayoutInflater.from(context); this.context = context; this.datas = datas; } @Override public ViewHolderr onCreateViewHolder(ViewGroup parent, int viewType) { View view=layoutInflater.inflate(R.layout.item,parent,false); ViewHolderr viewHolderr=new ViewHolderr(view); return viewHolderr; } @Override public void onBindViewHolder(final ViewHolderr holder, int position) { holder.getButton().setText(datas[position]); //在该函数中为recyclerview的视图绑定监听事件 if (onItemClickListener != null) { holder.getButton().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onItemClickListener.OnItemclick(holder.itemView, holder.getLayoutPosition()); } }); } } @Override public int getItemCount() { return datas.length; } public void setOnItemClickListner(OnItemClickListener onItemClickListner){ this.onItemClickListener=onItemClickListner; }}
第三,就是在Mainactivity中给recyclerview设置监听事件了:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); final LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); recyclerview.setLayoutManager(linearLayoutManager); Adapter adapterr=new Adapter(this,datas); adapterr.setOnItemClickListner(new OnItemClickListener() { @Override public void OnItemclick(View view, int position) { Toast.makeText(MainActivity.this, datas[position], Toast.LENGTH_SHORT).show(); } }); recyclerview.setAdapter(adapterr); recyclerview.setHasFixedSize(true); recyclerview.setItemAnimator(new DefaultItemAnimator()); }
以下是对整个recycler的监听事件(来自https://developer.android.com/)
recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() { //返回当前recyclerview的可见的item数目,也就是datas.length //dx是水平滚动的距离,dy是垂直滚动距离,向上滚动的时候为正,向下滚动的时候为负 @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int firstVisibleItemPosition=linearLayoutManager.findFirstVisibleItemPosition();//可见范围内的第一项的位置 int lastVisibleItemPosition=linearLayoutManager.findLastVisibleItemPosition();//可见范围内的最后一项的位置 int itemCount=linearLayoutManager.getItemCount();//recyclerview中的item的所有的数目 //System.out.println(linearLayoutManager.getItemCount()); System.err.println(dy); } }); recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); /* new State 0(SCROLL_STATE_IDLE)表示recyclerview是不动的(The RecyclerView is not currently scrolling.) 1(SCROLL_STATE_DRAGGING)表示recyclerview正在被拖拽(The RecyclerView is currently being dragged by outside input such as user touch input.) 2(SCROLL_STATE_SETTLING)表示recyclerview正在惯性下滚动(The RecyclerView is currently animating to a final position while not under outside control.) */ switch(newState) { case 0: System.out.println("recyclerview已经停止滚动"); break; case 1: System.out.println("recyclerview正在被拖拽"); break; case 2: System.out.println("recyclerview正在依靠惯性滚动"); break; } } });
Demo源码已经上传到github.com,需要的朋友请戳https://github.com/Gpwner/Recyclerview/tree/master
0 0
- Android 为Recyclerview添加滚动监听事件,以及为它每一个item设置点击监听事件
- Android RecyclerView (三)初学,为RecyclerView添加Item点击监听。
- RecyclerView的Item设置点击监听事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- RecyclerView为每个item添加点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- Android 为RecyclerView中的item添加点击事件
- Android 技术之为RecyclerView添加item的点击事件
- Android中为RecyclerView添加item的点击事件
- 学习过程中的一些总结
- RedTiger's Hackit Level 2
- [UC/OS-II原理及应用]μC/OS-Ⅱ可裁剪性的实现
- 五猴分桃
- 【STM8学习笔记】——IAR For STM8环境下建立工程
- Android 为Recyclerview添加滚动监听事件,以及为它每一个item设置点击监听事件
- 多指标综合评价方法汇总
- Cows
- MVP架构下Android的Rxjava与Retrofit 结合
- hdu3394Railway
- 总结
- LightOJ 1088 - Points in Segments (二分)
- 代码规范
- 26. Remove Duplicates from Sorted Array(移除有序数组中的重复元素)