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 点击事件监听的更多相关文章

  1. Android实战简易教程-第十五枪(实现ListView中Button点击事件监听)

    1.main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...

  2. cocos2d JS touch屏幕点击事件监听 cc.EventListener.TOUCH

    var self = this; this.touchListener = cc.EventListener.create({ event: cc.EventListener.TOUCH_ONE_BY ...

  3. NavigationView的头部的事件监听

    现在App的UI设计中Drawerlayout+NavigationView是一个比较常用的设计了,而以前我一般只是在Navigation中的menu(即下部的item中)添加事件监听,而今天碰到一个 ...

  4. 【winform】基于UserControl实现webBrower组件时html页面元素加载及onclick事件监听实现

    [背景]基于System.Windows.Forms.UserControl实现的webBrower组件在html内使用window.external调用winform事件失败. [解决思路]借助wi ...

  5. jQuery EasyUI/TopJUI输入框事件监听

    jQuery EasyUI/TopJUI输入框事件监听 代码如下: <div data-toggle="topjui-panel" title="" da ...

  6. Android事件监听(二)——点击鼠标事件

    Button.ImageButton事件监听(setOnClickListener) 方法一:通过匿名内部类实现 代码如下: package com.note.demo2; import androi ...

  7. Java中用得比较顺手的事件监听

    第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...

  8. 让 select 的 option 标签支持事件监听(如复制操作)

    这标题,让option支持事件监听,应该不难的呀,有什么好讲的? 其实还是有的,默认在浏览器代码是无法直接对option标签进行操作的,不仅包括JS事件监听,还是CSS样式设置 查了一些资料,姑且认为 ...

  9. [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播

    -->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的oncl ...

随机推荐

  1. Prometheus 初探和配置(安装测试)

    本文大纲: • Prometheus 官⽹下载• Prometheus 开始安装• Prometheus 启动运⾏• Prometheus 基本配置⽂件讲解• 安装第⼀个exporter => ...

  2. DOS windows 使用bat脚本获取 IP MAC 系统信息

    @echo select disk 0 >dpjs.txt @echo detail disk >>dpjs.txt diskpart /s dpjs.txt@echo ------ ...

  3. 你必须知道的关于操作系统的N个概念!

    本文全部概念都是基于<计算机操作系统教程(第四版)>中的表述归纳而成. 操作系统的任务和功能 操作系统的职能是管理和控制计算机系统中的所有硬件和软件资源,合理地组织计算机流程,并为用户提供 ...

  4. jackson学习之七:常用Field注解

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. Watering Grass(贪心算法)

    给定一条草坪.草坪上有n个喷水装置.草坪长l米宽w米..n个装置都有每个装置的位置和喷水半径..要求出最少需要几个喷水装置才能喷满草坪..喷水装置都是装在草坪中间一条水平线上的. n sprinkle ...

  6. 1. Machine Learning - Introduction

    Speaker: Andrew Ng   1. Introduction 1.A comptuter program is said to learn from experience E with r ...

  7. Educational Codeforces Round 88 (Rated for Div. 2) E、Modular Stability 逆元+思维

    题目链接:E.Modular Stability 题意: 给你一个n数,一个k,在1,2,3...n里挑选k个数,使得对于任意非负整数x,对于这k个数的任何排列顺序,然后用x对这个排列一次取模,如果最 ...

  8. Codeforces Round #547 (Div. 3) C. Polycarp Restores Permutation (数学)

    题意:有一长度为\(n\)的序列\(p\),现在给你\(q_i=p_{i+1}-q_i \ (1\le i\le n)\),问你是否能还原出原序列,如果能救输出原序列,否则输出\(-1\). 题解:由 ...

  9. 洛谷 P6225 [eJOI2019]异或橙子 (树状数组)

    题意:有\(n\)个数,起始值均为\(0\),进行\(q\)次操作,每次输入三个数,如果第一个数为\(1\),则将第\(i\)个数修改为\(j\),如果为\(2\),则求区间\([l,r]\)内的所有 ...

  10. HDU 3416 Marriage Match IV (最短路径&&最大流)

    /*题意: 有 n 个城市,知道了起点和终点,有 m 条有向边,问从起点到终点的最短路一共有多少条.这是一个有向图,建边的时候要注意!!解题思路:这题的关键就是找到哪些边可以构成最短路,其实之前做最短 ...