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) { } });

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2024-09-23 05:17:21

Android 中RecycleView实现item的点击事件的相关文章

Android 中ListView的Item点击事件失效的快速解决方法_Android

在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布局和自定义adapter了,一般是继承于BaseAdapter,示例代码见下方.写ListView的点击事件时OnItemClickListener,onItemClick方法没有执行,导致ListView中Item条目点击事件失效,而Item中的View点击事件可以在getView方法中进行处理.导致整个Item点击失效的原因多半是由于在[你自己定义的Item中存在诸

Android 中ListView的Item点击事件失效的快速解决方法

在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布局和自定义adapter了,一般是继承于BaseAdapter,示例代码见下方.写ListView的点击事件时OnItemClickListener,onItemClick方法没有执行,导致ListView中Item条目点击事件失效,而Item中的View点击事件可以在getView方法中进行处理.导致整个Item点击失效的原因多半是由于在[你自己定义的Item中存在诸

Android中ListView的item点击没有反应的解决方法

如果stu_item.xml里面包括button或者checkbox等控件,默认情况下list的item会失去焦点,导致无法响应item的事件,最常用的解决办法是在stu_item.xml的布局文件中设置descendantFocusability属性. 该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系. 属性的值有三种: beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup只有

android 往dialog中加入listview,并实现listview中item的点击事件

LinearLayout linearLayoutMain = new LinearLayout(this);//自定义一个布局文件 linearLayoutMain.setLayoutParams(new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); ListView listView = new ListView(this);//this为获取当前的上下文 listView.setFadingEdg

RecycleView的使用,并添加子item的点击事件

1.导入 compile 'com.android.support:recyclerview-v7:23.3.0' 2.准备工作(间隔) import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; impor

Android recycleView的应用和点击事件实例详解

Android recycleView的应用和点击事件 效果图: 长按是删除: 下面代码: MainActivity 类 public class MainActivity extends AppCompatActivity { RecyclerView rv; List<String> mList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.on

Android 中RecyclerView多种item布局的写法(头布局+脚布局)

RecyclerView多个item布局的写法(头布局+脚布局) 上图 github 下载源码 Initial commit第一次提交的代码,为本文内容 以下的为主要代码,看注释即可,比较简单 MainActivity 含上拉加载更多 package com.anew.recyclerviewall; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivi

android 中的listview item中如何放置一个高度超过item的imageview

问题描述 android 中的listview item中如何放置一个高度超过item的imageview android 中的listview item中如何放置一个高度超过item的imageview. 现在项目有需求,需要在一个listview的item中放置一个imageview,而imageview的高度要 超过这个item,是他看起来只显示imageview的一部分.大伙有思路吗? 解决方案 [android]ListView的item高度调整android给listview的ite

android gr-如何让android中gridview的item大小不一样

问题描述 如何让android中gridview的item大小不一样 类似电视盒子的分类那样,每个item 的大小不一样,可能不实用gridview控件,那用的是什么控件? 解决方案 你说的是仿win8布局吧 可以用html方式http://www.158code.com/article/21 也可以自己实现,用tablelayout也可以用Linarlayout方式布局.不用gridview 解决方案二: 得到item的layoutparams,设置height属性 解决方案三: 用最简单的L