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;
}
public void setOnItemClickListener(MyItemClickListener listener) {
this.mItemClickListener = listener;
}
}
最后在activity中
//根据adapter来设置item的点击事件
recyclerViewAdapter.setOnItemClickListener(new MyItemClickListener() {
@Override
public void onItemClick(View view, int postion) {
}
});
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:Android RecycleView使用(CheckBox全选、反选、单选)Android使用RecycleView实现拖拽交换item位置Android ScrollView实现向上滑动控件顶部悬浮效果浅谈Android应用内悬浮控件实践方案总结Android自定义覆盖层控件 悬浮窗控件Android 实现控件悬浮效果实例代码Android开发之基于RecycleView实现的头部悬浮控件