Android 中RecycleView实现item的点击事件
Android 中RecycleView实现item的点击事件
RecycleView现在已经越来越受到大家的重视,因为他既可以代替listView还可以代替GridView,但是RecycleView本身不不像ListView那样具有setOnItemClickListener,这个关于子item的点击,但是我们往往会用到RecycleView并且希望他的自孩子可以被点击,那么如何实现他的item的点击事件呢?
首先我们在RecyclerView.ViewHolder中的实现:
public class GridViewHolder extends RecyclerView.ViewHolder implements OnClickListener{ //声明MyItemClickListener private MyItemClickListener mListener; public GridViewHolder(View rootView,MyItemClickListener listener) { super(rootView); this.mListener = listener; rootView.setOnClickListener(this); } @Override public void onClick(View v) { //如果mListener不为空,就实现接口中的方法onItemClick其中getPosition()是得到被点击位置的position if(mListener != null){ mListener.onItemClick(v,getPosition()); } } //声明MyItemClickListener这个接口 public interface MyItemClickListener { public void onItemClick(View view,int postion); } }
最后在RecyclerViewAdapter中实现:
package com.ledon.activity.adapter; import Java.util.ArrayList; import java.util.List; import com.ledon.activity.adapter.GridViewHolder.MyItemClickListener; import com.ledon.ledongym.R; import com.lidroid.xutils.BitmapUtils; import Android.content.Context; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; public class RecyclerViewAdapter extends RecyclerView.Adapter<GridViewHolder> { private final List<String> labels; private LayoutInflater mLayoutInflater; private Context context; private MyItemClickListener mItemClickListener; public RecyclerViewAdapter(int count, Context context) { this.labels = new ArrayList<String>(count); mLayoutInflater = LayoutInflater.from(context); for (int i = 0; i < count; i++) { labels.add(String.valueOf(i)); } } @Override public int getItemCount() { return labels.size(); } @Override public void onBindViewHolder(GridViewHolder viewHolder, int position) { viewHolder.itemView.setTag(labels.get(position)); } @Override public GridViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = null; view = mLayoutInflater.inflate(R.layout.item_userinfo, parent, false); //通过构造函数将mItemClickListener GridViewHolder holder = new GridViewHolder(view, mItemClickListener); return holder; } /** * 设置Item点击监听 * * @param listener */ public void setOnItemClickListener(MyItemClickListener listener) { this.mItemClickListener = listener; } }
最后在activity中
//根据adapter来设置item的点击事件 recyclerViewAdapter.setOnItemClickListener(new MyItemClickListener() { @Override public void onItemClick(View view, int postion) { } });
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
Android App中制作仿MIUI的Tab切换效果的实例分享
这篇文章主要介绍了Android App中制作仿MIUI的Tab切换效果的实例分享,实现具有跟随手指滚动而滚动功能的ViewPagerIndicator,需要的朋友可以参考下2016-04-04Android中ContentProvider和ContentResolver详解
这篇文章主要介绍了Android中ContentProvider和ContentResolver详解的相关资料,需要的朋友可以参考下2017-04-04Android sharedPreferences实现记住密码功能
这篇文章主要为大家详细介绍了Android sharedPreferences实现记住密码功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-04-04android 仿微信demo——微信消息界面实现(移动端)
本系列文章主要介绍了微信小程序-阅读小程序实例(demo),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能给你们提供帮助2021-06-06
最新评论