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. Docker 之 Jenkins自动化部署

    Docker 之 Jenkins自动化部署 Jenkins部署 jenkis 绑定gitlab shell脚本自动化构建Docker镜像 提升maven构建速度 jenkins 无法通过shell脚本 ...

  2. 【Oracle】SQL/92 执行多个表的连接

    内连接 外连接 自连接 交叉连接 1.内连接 表名 INNER JOIN 表名 ON 条件 等价于: FROM 表名, 表名 WHERE 条件 SELECT p.name, pt.name, pt.p ...

  3. Centos搭建Hive

    Centos搭建Hive 一.Hive简介 二.安装Hive 2.1hive下载 2.2上传解压 2.3配置hive相关的环境变量 三.Mysql 3.1安装mysql connector 3.2 将 ...

  4. python yield初探 (转)

    1. iterator叠代器最简单例子应该是数组下标了,且看下面的c++代码: int array[10]; for ( int i = 0; i < 10; i++ )    printf(& ...

  5. Kwp2000协议的应用(程序后续篇)

    作者:良知犹存 转载授权以及围观:欢迎添加微信:becom_me 总述 接上篇文章,本篇继续对基于PID解析数据,如何依据J1979的标准进行解析数据 先给昨天的文章补上一张故障码对照表,昨天分析了如 ...

  6. 通过HBase Observer同步数据到ElasticSearch

    Observer希望解决的问题 HBase是一个分布式的存储体系,数据按照RowKey分成不同的Region,再分配给RegionServer管理.但是RegionServer只承担了存储的功能,如果 ...

  7. Educational Codeforces Round 17

    Educational Codeforces Round 17 A. k-th divisor 水题,把所有因子找出来排序然后找第\(k\)大 view code //#pragma GCC opti ...

  8. 简谈图论重要性&&图论总结

    从外地学习回来,我对图论才有认识(以前就没接触过,非常尴尬),说实话,学好图论的重要性,就像学数学时在进行解析几何时,图极有可能是打开答案的最后秘钥,也就是数形结合,而懂的人永远明白,用图解决绝对比用 ...

  9. 数据可视化 -- Python

    前提条件: 熟悉认知新的编程工具(jupyter notebook) 1.安装:采用pip的方式来安装Jupyter.输入安装命令pip install jupyter即可: 2.启动:安装完成后,我 ...

  10. ElasticSearch 交互使用

    Curl 命令 # 建立索引 [root@dbtest01 ~]# curl -XPUT 'http://10.0.0.121:9200/test' # 插入数据 [root@dbtest01 ~]# ...