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. linux日志中查找关键字、前几行、结尾几行,Linux的find用法示例

    linux在日志中查找关键字.前几行.结尾几行,Linux的find用法示例 1.linux在日志中查找关键字.前几行.结尾几行 1.1查看日志 前 n行: 1.2查看日志 尾 n行: 1.3根据 关 ...

  2. jvm学习第一天

    视频教程链接 第一部分-jvm初识 0.jvm概览图 JVM由三个主要的子系统构成 类加载子系统 运行时数据区(内存结构) 执行引擎运行时数据区(内存结构) 1.什么是jvm 定义: ①. JVM 是 ...

  3. 【实战】通过Python实现疫情地图可视化

    目录 一. json模块 二.通过Python实现疫情地图可视化 2.将json格式的数据保存到Excel 3.应用pyecharts进行数据可视化 一. json模块 JSON(JavaScript ...

  4. ACwing 258. 石头剪子布

    258. 石头剪子布 题目传送门 题意挺好理解,但是当我看样例的时候就傻了.不是说好的只有一个裁判的吗?出现矛盾的时候该怎么判定裁判? 分析 观察这个数据量就会发觉是有猫腻的,直接从正面求出裁判并不是 ...

  5. AtCoder Beginner Contest 176

    比赛链接:https://atcoder.jp/contests/abc176 A - Takoyaki #include <bits/stdc++.h> using namespace ...

  6. AtCoder Beginner Contest 162

    比赛链接:https://atcoder.jp/contests/abc162/tasks A - Lucky 7 #include <bits/stdc++.h> using names ...

  7. Codeforces Round #646 (Div. 2) 题解 (ABCDE)

    目录 A. Odd Selection B. Subsequence Hate C. Game On Leaves D. Guess The Maximums E. Tree Shuffling ht ...

  8. FZU1894 志愿者选拔

    Problem Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动.参加志愿者选拔的同学们排队接受面试官们的面试.参加面试的同学们按照先来先面试并且先结束的原则接受面试官们 ...

  9. python代理池的构建1——代理IP类的构建,以及配置文件、日志文件、requests请求头

    一.整体结构 二.代理IP类的构建(domain.py文件) ''' 实现_ init_ 方法, 负责初始化,包含如下字段: ip: 代理的IP地址 port:代理IP的端口号 protocol: 代 ...

  10. WSL安装

    默认的我们可以看到并没有安装任何发行版本: 访问:https://aka.ms/wslstore 安装后我们如何进入linux系统呢,我们使用windows terminal