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. Language Guide (proto3) | proto3 语言指南(四)枚举类型

    枚举类型 定义消息类型时,可能希望其中一个字段只包含预定义值列表中的一个.例如,假设您想为每个SearchRequest添加一个corpus(语料库)字段,其中语料库的值可以是UNIVERSAL.WE ...

  2. (三)集成 JavaMail ,实现异步发送邮件

    集成 JavaMail ,实现异步发送邮件 1.JavaMail的核心API 1.1 API功能图解 1.2 API说明 1.2.1 Message 类: 1.2.2 Transport 类 1.2. ...

  3. ThinkPHP 漏洞利用

    ThinkPHP thinkphp_5x_命令执行漏洞 受影响版本包括5.0和5.1版本 docker漏洞环境源码: https://github.com/vulnspy/thinkphp-5.1.2 ...

  4. 阿里云MQ

    阿里云众多中间件服务中有一款非常强大的中间见服务,在企业互联网架构中起到不可替代的作用,相比较开源的RabbitMQ,阿里的消息队列MQ承受的住阿里内部1000+核心应用的使用,每天转几千条消息,稳定 ...

  5. git submodule添加、更新和删除

    添加 git submodule add <url> <path> url:替换为自己要引入的子模块仓库地址 path:要存放的本地路径 执行添加命令成功后,可以在当前路径中看 ...

  6. LINUX中备份mysql数据库

    1.在LINUX中创建备份目录 如:/home/backup   2.把sh脚本放到备份目录下   脚本如下 https://wws.lanzous.com/i1oCxlccapa密码:dter   ...

  7. Workflow任务流发布不了

    依赖的工作流要发布

  8. 1155 Heap Paths

    题干前半略. Sample Input 1: 8 98 72 86 60 65 12 23 50   Sample Output 1: 98 86 23 98 86 12 98 72 65 98 72 ...

  9. 用Python修改本机适配器信息

    主要参考来自[用Python干实事(一)自动修改Windows的IP.网关和DNS设置]. 使用_winreg模块来操作注册表实现相关信息的修改,它是python的内置模块.也可以通过Win32 Ex ...

  10. Slim Span POJ 3522 (最小差值生成树)

    题意: 最小生成树找出来最小的边权值总和使得n个顶点都连在一起.那么这找出来的边权值中的最大权值和最小权值之差就是本题的结果 但是题目要求让这个输出的结果最小,也就是差值最小.那么这就不是最小生成树了 ...