RecycleView 点击事件监听
1、定义RecycleView 监听接口类
1 package com.example.*****;
2
3 import android.view.View;
4
5 public interface OnRecycleViewClickListener {
6 void onItemClickListener (View view);
7
8 void onItemLongClickListener(View view);
9 }
3、布局中加个RecycleView,宽高位置等等不用管它
1 <?xml version="1.0" encoding="utf-8"?>
2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 tools:context=".MainActivity">
8 <androidx.recyclerview.widget.RecyclerView
9 android:id="@+id/mainTitle"
10 android:layout_width="0dp"
11 android:layout_height="0dp"
12 app:layout_constraintBottom_toBottomOf="parent"
13 app:layout_constraintEnd_toEndOf="parent"
14 app:layout_constraintStart_toStartOf="parent"
15 app:layout_constraintTop_toTopOf="parent"
16 />
17 </androidx.constraintlayout.widget.ConstraintLayout>
4、新建个Layout XML FIle,分割线可直接定义个View来解决;
1 <RelativeLayout
2 xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 android:layout_height="80sp"
5 android:layout_width="match_parent"
6 android:orientation="vertical"
7 android:layout_centerHorizontal="true"
8 android:layout_margin="10dp">
9
10 <TextView
11 android:id="@+id/mainTitle"
12 android:layout_width="wrap_content"
13 android:layout_height="wrap_content"
14 android:layout_alignParentEnd="true"
15 android:layout_centerInParent="true"
16 android:layout_marginEnd="182dp"
17 android:gravity="center"
18 android:text="text"
19 android:textAlignment="center"
20 android:textSize="24sp"
21 android:textStyle="bold" />
22
23 <View
24 android:layout_width="match_parent"
25 android:layout_height="1dp"
26 android:background="#FFD1D0D0"
27 android:layout_below="@id/mainTitle"
28 android:layout_marginTop="10sp"
29 android:layout_marginRight="5sp"
30 android:layout_marginLeft="5sp"/>
31
32 <ImageView
33 android:id="@+id/imageView"
34 android:layout_width="wrap_content"
35 android:layout_height="wrap_content"
36 android:layout_alignParentTop="true"
37 android:layout_alignParentEnd="true"
38 android:layout_centerVertical="true"
39 android:layout_marginTop="13dp"
40 android:layout_marginEnd="6dp"
41 app:srcCompat="@android:drawable/ic_media_play" />
42
43
44 </RelativeLayout>

设置后如上图
5、重写Adapter
1 package com.example.mycalculator20;
2
3 import android.content.Context;
4 import android.view.LayoutInflater;
5 import android.view.View;
6 import android.view.ViewGroup;
7 import android.widget.TextView;
8
9 import androidx.annotation.NonNull;
10 import androidx.recyclerview.widget.RecyclerView;
11
12 import java.util.List;
13
14 public class TitleRecyclerAdapter extends RecyclerView.Adapter<TitleRecyclerAdapter.TitleViewHolder> {
15 private Context context;
16 private List<String> list;
17 private View inflater;
18 private OnRecycleViewClickListener listener;
19
20 //创建方法 setItemClickListener();
21 public void setItemClickListener (OnRecycleViewClickListener itemClickListener){
22 listener = itemClickListener;
23 }
24
25 class TitleViewHolder extends RecyclerView.ViewHolder{
26 TextView textView;
27
28 public TitleViewHolder(@NonNull View itemView) {
29 super(itemView);
30 textView=itemView.findViewById(R.id.mainTitle);
31 }
32 }
33
34 //构造方法 传入数据
35 public TitleRecyclerAdapter(Context context, List<String> list){
36 this.context = context;
37 this.list = list;
38 }
39
40
41 @NonNull
42 @Override
43 public TitleRecyclerAdapter.TitleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
44 //创建viewHolder,返回每一项布局;
45 inflater = LayoutInflater.from(context).inflate(R.layout.sample_main__title_recycle_view,parent,false);
46 TitleViewHolder titleViewHolder = new TitleViewHolder(inflater);
47
48 //接口回调
49 if(listener != null){
50 inflater.setOnClickListener(new View.OnClickListener() {
51 @Override
52 public void onClick(View v) {
53 listener.onItemClickListener(v);
54 }
55 });
56
57 }
58
59 return titleViewHolder;
60 }
61
62 @Override
63 public void onBindViewHolder(@NonNull TitleRecyclerAdapter.TitleViewHolder holder, int position) {
64 //将数据和控件绑定
65 holder.textView.setText(list.get(position));
66
67 }
68
69 @Override
70 public int getItemCount() {
71 return list.size();
72 }
73 }
6、MainActivity.class
package com.example.mycalculator20; import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager; import android.content.Intent;
import android.os.Bundle;
import android.view.View; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; public class MainActivity extends AppCompatActivity {
private RecyclerView mainTitle;
final String[] Titls ={"通过管径计算流速","通过流速计算管径"};
private List<String> list;
private TitleRecyclerAdapter titleAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mainTitle = findViewById(R.id.mainTitle); list = Arrays.asList(Titls); titleAdapter = new TitleRecyclerAdapter(MainActivity.this,list);
LinearLayoutManager manager = new LinearLayoutManager(this);
StaggeredGridLayoutManager stagger = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
mainTitle.setLayoutManager(stagger);
mainTitle.setAdapter(titleAdapter); //Item点击监听
titleAdapter.setItemClickListener(new OnRecycleViewClickListener() {
@Override
public void onItemClickListener(View view) {
int position = mainTitle.getChildAdapterPosition(view);
switch (position){
case 0:
startActivity(new Intent(MainActivity.this,DNtoV.class));
break;
case 1:
startActivity(new Intent(MainActivity.this,VTODN.class));
break;
}
} @Override
public void onItemLongClickListener(View view) { }
}); }
}
完成后效果图

RecycleView 点击事件监听的更多相关文章
- Android实战简易教程-第十五枪(实现ListView中Button点击事件监听)
1.main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- cocos2d JS touch屏幕点击事件监听 cc.EventListener.TOUCH
var self = this; this.touchListener = cc.EventListener.create({ event: cc.EventListener.TOUCH_ONE_BY ...
- NavigationView的头部的事件监听
现在App的UI设计中Drawerlayout+NavigationView是一个比较常用的设计了,而以前我一般只是在Navigation中的menu(即下部的item中)添加事件监听,而今天碰到一个 ...
- 【winform】基于UserControl实现webBrower组件时html页面元素加载及onclick事件监听实现
[背景]基于System.Windows.Forms.UserControl实现的webBrower组件在html内使用window.external调用winform事件失败. [解决思路]借助wi ...
- jQuery EasyUI/TopJUI输入框事件监听
jQuery EasyUI/TopJUI输入框事件监听 代码如下: <div data-toggle="topjui-panel" title="" da ...
- Android事件监听(二)——点击鼠标事件
Button.ImageButton事件监听(setOnClickListener) 方法一:通过匿名内部类实现 代码如下: package com.note.demo2; import androi ...
- Java中用得比较顺手的事件监听
第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...
- 让 select 的 option 标签支持事件监听(如复制操作)
这标题,让option支持事件监听,应该不难的呀,有什么好讲的? 其实还是有的,默认在浏览器代码是无法直接对option标签进行操作的,不仅包括JS事件监听,还是CSS样式设置 查了一些资料,姑且认为 ...
- [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播
-->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的oncl ...
随机推荐
- SSH密码暴力破解及防御实战
SSH密码暴力破解及防御实战 一.Hydra(海德拉) 1.1 指定用户破解 二.Medusa(美杜莎) 2.1 语法参数 2.2 破解SSH密码 三.Patator 3.1 破解SSH密码 四.Br ...
- Zabbix系列优秀博文
Zabbix系列优秀博文 CSDN:菲宇:Zabbix专栏
- 菜鸟初学Linux——Ubuntu系统中,用root权限进行复制粘贴操作
long long ago,积累了一些Linux的小知识,拿出来分享一下,希望以后能够在工作上带来一些帮助. 方法一 第一步:打开终端,在命令行里输入sudo nautilus 第二步:输入你的用 ...
- DEDECMS:修改网站底部出现的POWER BY DEDECMS
在include/dedesql.classs.php文件中找到第588行: $arrs1 = array(0x63,0x66,0x67,0x5f,0x70,0x6f,0x77,0x65,0x72,0 ...
- NodeMCU使用ArduinoJson判断指定键值对存在与否
NodeMCU使用ArduinoJson判断指定键值对存在与否 从ArduinoJson库中可以得知,判断键值对是否存在可以使用containskey()函数,但是查看ArduinoJson-cont ...
- 深入浅出Java线程池:源码篇
前言 在上一篇文章深入浅出Java线程池:理论篇中,已经介绍了什么是线程池以及基本的使用.(本来写作的思路是使用篇,但经网友建议后,感觉改为理论篇会更加合适).本文则深入线程池的源码,主要是介绍Thr ...
- 【bzoj2429】[HAOI2006]聪明的猴子(图论--最小瓶颈生成树 模版题)
题意:有M只猴子,他们的最大跳跃距离为Ai.树林中有N棵树露出了水面,给出了它们的坐标.问有多少只猴子能在这个地区露出水面的所有树冠上觅食. 解法:由于要尽量多的猴子能到达所有树冠,便用Kruskal ...
- Codeforces Round #658 (Div. 2)【ABC2】
做完前四题还有一个半小时... 比赛链接:https://codeforces.com/contest/1382 A. Common Subsequence 题意 给出两个数组,找出二者最短的公共子序 ...
- hdu5886Tower Defence(树形dp)
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- Codeforces Round #608 (Div. 2) E. Common Number (二分,构造)
题意:对于一个数\(x\),有函数\(f(x)\),如果它是偶数,则\(x/=2\),否则\(x-=1\),不断重复这个过程,直到\(x-1\),我们记\(x\)到\(1\)的这个过程为\(path( ...