Recyclerview条目的点击回调
来源:互联网 发布:2017淘宝现在还能刷吗 编辑:程序博客网 时间:2024/06/05 14:13
第一个,MyOnItemClickListener.java,响应 RecyclerView item的点击事件:
import android.view.View;/** * item点击接口 */public interface MyOnItemClickListener { void OnItemClickListener(View view, int position);}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
第二个,MyOnItemLongClickListener.java,响应 RecyclerView item的长按事件:
import android.view.View;/** * item长按接口 */public interface MyOnItemLongClickListener { void OnItemLongClickListener(View view, int position);}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
然后在MyRecyclerViewAdapter里面声明这两个接口,定义两个方法,用来让adapter在Activity里面回调,并在onBindViewHolder中给item设置监听:
定义的方法:
/** * 列表点击事件 * * @param itemClickListener */ public void setOnItemClickListener(MyOnItemClickListener itemClickListener) { this.itemClickListener = itemClickListener; } /** * 列表长按事件 * * @param itemLongClickListener */ public void setOnItemLongClickListener(MyOnItemLongClickListener itemLongClickListener) { this.itemLongClickListener = itemLongClickListener; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
onBindViewHolder中:
/*自定义item的点击事件不为null,设置监听事件*/ if (itemClickListener != null) { myViewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { itemClickListener.OnItemClickListener(myViewHolder.itemView, myViewHolder.getLayoutPosition()); } }); } /*自定义item的长按事件不为null,设置监听事件*/ if (itemLongClickListener != null) { myViewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { itemLongClickListener.OnItemLongClickListener(myViewHolder.itemView, myViewHolder.getLayoutPosition()); return true; } }); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
最后在Activity里面调用setOnItemClickListener和setOnItemLongClickListener就可以了。
下面看完整代码:
MyRecyclerViewAdapter.java
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 jia on 2015/10/16. */class MyRecyclerViewAdapter extends RecyclerView.Adapter { private Context context; private List<String> list; private MyOnItemClickListener itemClickListener; private MyOnItemLongClickListener itemLongClickListener; public MyRecyclerViewAdapter(Context context, List<String> list) { this.context = context; this.list = list; } /** * onCreateViewHolder中负责为Item创建视图 * * @param viewGroup * @param i * @return */ @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { /*初始化填充RecyclerView的item*/ View viewItem = LayoutInflater.from(context).inflate(R.layout.list_item, viewGroup, false); /*返回自定义的ViewHolder*/ MyViewHolder myViewHolder = new MyViewHolder(viewItem); return myViewHolder; } /** * onBindViewHolder负责将数据绑定到Item的视图上。 * * @param viewHolder * @param position */ @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { /*将接收到的ViewHolder强转成自定义的VIewHolder*/ final MyViewHolder myViewHolder = (MyViewHolder) viewHolder; /*为Item设置数据*/ myViewHolder.getIdView().setText(list.get(position)); myViewHolder.getNameView().setText("name"); /*自定义item的点击事件不为null,设置监听事件*/ if (itemClickListener != null) { myViewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { itemClickListener.OnItemClickListener(myViewHolder.itemView, myViewHolder.getLayoutPosition()); } }); } /*自定义item的长按事件不为null,设置监听事件*/ if (itemLongClickListener != null) { myViewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { itemLongClickListener.OnItemLongClickListener(myViewHolder.itemView, myViewHolder.getLayoutPosition()); return true; } }); } } /** * 本方法决定了绘制item的数量 * * @return */ @Override public int getItemCount() { return list.size(); } /** * 列表点击事件 * * @param itemClickListener */ public void setOnItemClickListener(MyOnItemClickListener itemClickListener) { this.itemClickListener = itemClickListener; } /** * 列表长按事件 * * @param itemLongClickListener */ public void setOnItemLongClickListener(MyOnItemLongClickListener itemLongClickListener) { this.itemLongClickListener = itemLongClickListener; } class MyViewHolder extends RecyclerView.ViewHolder { private TextView idView; private TextView nameView; public MyViewHolder(View itemView) { super(itemView); idView = (TextView) itemView.findViewById(R.id.id); nameView = (TextView) itemView.findViewById(R.id.name); } public TextView getIdView() { return idView; } public TextView getNameView() { return nameView; } }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
MainActivity.java
import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import android.view.View;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends ActionBarActivity { private RecyclerView recyclerView; private MyRecyclerViewAdapter adapter; private List<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.recyclerView); initData(); /* * 初始化一个布局管理器,这里是默认的竖直线性,效果如上图所示 * 其实完整写法为: * LinearLayoutManager manager = new LinearLayoutManager(context, orientation, reverseLayout); * 其中三个参数分别表示: * 1.context:上下文 * 2.orientation:布局方向; * LinearLayoutManager.VERTICAL:竖直方向(默认) * LinearLayoutManager.HORIZONTAL:水平方向 * 3.reverseLayout:布局数据是否反向;false:正常(默认);true:反向; * 下边的写法就相当于:new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); */ LinearLayoutManager manager = new LinearLayoutManager(this); recyclerView.setLayoutManager(manager); adapter = new MyRecyclerViewAdapter(MainActivity.this, list); recyclerView.setAdapter(adapter); /*点击事件*/ adapter.setOnItemClickListener(new MyOnItemClickListener() { @Override public void OnItemClickListener(View view, int position) { Toast.makeText(getApplicationContext(), "position" + position + "被点击", Toast.LENGTH_SHORT).show(); } }); /*长按事件*/ adapter.setOnItemLongClickListener(new MyOnItemLongClickListener() { @Override public void OnItemLongClickListener(View view, int position) { /*长按删除*/ list.remove(position); adapter.notifyItemRemoved(position); } }); } /** * 初始化集合,添加数据 */ private void initData() { list = new ArrayList<>(); for (int i = 0; i < 100; i++) { list.add("id:" + i); } }}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
简洁版1.定义一个接口public interface MyOnItemClickListener { void OnItemClickListener(View view, int position);}2.适配器中添加:private MyOnItemClickListener itemClickListener;public void setOnItemClickListener(MyOnItemClickListener itemClickListener) { this.itemClickListener = itemClickListener;}3.适配器onBindViewHolder中添加:if (itemClickListener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { itemClickListener.OnItemClickListener(holder.itemView, holder.getLayoutPosition()); } });}HomeAdapter2.this.setOnItemClickListener(new MyOnItemClickListener() { @Override public void OnItemClickListener(View view, int position) { Toast.makeText(context,"er",Toast.LENGTH_LONG).show(); }});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
阅读全文
0 0
- Recyclerview条目的点击回调
- RecyclerView条目的点击事件,接口回调
- recyclerview的点击条目删除
- Recyclerview的条目点击事件
- 点击RecyclerView的条目跳转
- 通过接口回调方式来设置RecyclerView的条目点击监听事件
- recyclerview点击条目事件
- recyclerview条目点击事件
- Android RecyclerView的多条目加载的点击事件
- Recyclerview实现瀑布流布局及条目的点击事件
- Android 拦截Recyclerview的多条目点击事件
- RecyclerView条目点击和长按
- recyclerview点击事件 webview 多条目
- RecyclerView 多条目 包括点击事件
- RecyclerView 条目点击事件 XRecyclerView刷新加载
- RecycleView条目点击事件的实现 接口回调
- Android中Recyclerview使用7----条目中按钮点击事件,在activity中调用(接口回调)
- RecyclerView的条目监听事件
- Linux部分命令归纳
- 《汇编语言》(王爽)检测点2.3
- Leetcode算法课程第九周(补)
- Activity初步
- 还不知道这 11 个超酷的编程新工具你就 out 了!
- Recyclerview条目的点击回调
- 初识Linux
- 10分钟让你快速掌握Excel的16项重要技巧
- U/V-Net Brief
- web前端页面性能优化小结
- Linux之软件包管理学习笔记
- 分解质因数(5分)
- 二维码的应用,扫描二维码和生成二维码,使用回传值,导入依赖
- 零基础学习hadoop到上手工作线路指导(初级篇)