RecyclerView的点击

安卓之RecyclerView只点击RecyclerView不点击Item 今天讲一下RecyclerView这个控件,使得不点击里面的item,只点击RecyclerView,写了demo随便看看哈~~~ 首先先分析为什么我们设置了Recyclerview.setOnClickListener确没办法响应。其实可以看一下源码。 里面源码有这个也有点击事件的。其实直观的分析其实就是点击事件在item里面所以不在RecyclerView,导致RecyclerVi 阅读详情

RecyclerView这个对象并为ItemView没有暴露出点击事件,我们需要添加点击事件
在Adpater中添加点击事件
有的人可能会想在Adapter中onBindViewHolder有个RecyclerView.ViewHolder holder 参数,可以直接使用holder的控件对象的点击事件。
这样也是一种办法,但是这样的点击事件只能应用在Adapter,在Activity中是获取不到当前点击的position的

这篇博客呢其中的方法是通用的,比如说你以后写了一自定的的View想要添加一个特殊的点击事件,就可以用到下面的步骤

先来顺一下思路:
对于一个按钮来说点击时间是如下写的

if (onItemClickListener!=null){
        ((MyViewHolder) holder).itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int pos=holder.getLayoutPosition();
                    onItemClickListener.onItemClick(((MyViewHolder) holder).itemView,pos);
            }
        });
            ((MyViewHolder) holder).itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    int pos=holder.getLayoutPosition();
                    onItemClickListener.onItemLongClick(((MyViewHolder) holder).itemView,pos);
                    return false;
                }
            });
        }

int pos=holder.getLayoutPosition(); 在上一篇我写了一个增加一个itemView的逻辑代码,但是那样增加的item只是视觉上增加了,但是position的数量没有变化,所以我们要用这个方法获取点击的position

其实从这里可以看出,这个自定义的点击事件其实是没有任何点击事件的逻辑的,其实在点击的时候还是用的iteamView的onClick方法,只不过是将点击后要做的逻辑当到MainActity中

瀑布流Adapter实现点击事件

在上篇的博客中还写了一个瀑布流的效果,因为牵扯到itemView的高度变化,我们单独写了一个Adapter去实现效果,那么接下来就让瀑布流的Adapter也有点击事件的效果
继承最基础的MyAdapter
既然继承了MyAdapter有很多东西就不需要了,比如说构造方法中的this.xxx=xxx,自定义的ViwHolder等

public class StaggerAdapter extends MyAdapter {
    //用随机数模拟高度的变化
    private List<Integer> heightList;

    public StaggerAdapter(Context context, List<String> list) {
        super(context, list);
        heightList = new ArrayList<>();
        //将随机产生的itemView的高度放置到一个List中
        for (int i = 0; i < list.size(); i++) {
            heightList.add((int) (100 + Math.random() * 300));
        }
    }

    //绑定ViewHolder
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        //一般这个方法用于添加数据,现在我们将为itemView高度的设计也放到这个方法中
        ViewGroup.LayoutParams lp = ((MyViewHolder) holder).itemView.getLayoutParams();
        lp.height = heightList.get(position);
        ((MyViewHolder) holder).itemView.setLayoutParams(lp);

    }
}

最后这个类除了对item高度的逻辑代码之外其他的都可以删掉

在MainActicity中的调用

 staggerAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
                            @Override
                            public void onItemClick(View v, int pos) {
                            }

                            @Override
                            public void onItemLongClick(View v, int pos) {
                                myAdapter.deleteData(pos);

                            }
                        });

最后是长点击就进行删除效果,我的程序在显示方面出现了错误而且UI也特别丑,见谅

这里写图片描述

recyclerview点击事件与点击更改颜色 点击recyclerview条目改变控件颜色 首先介绍添加点击事件 适配器在原始的基础上添加 ①新建两个内部接口: public interface OnItemClickListener{ void onItemClick(View view,int position); } public interface OnItemLongClickListene 阅读详情

相关推荐

从零开始:Vivado中自定义串口通信IP核的完整实现

本文详细介绍了在Vivado中从零开始实现自定义串口通信IP核的完整流程,包括Verilog核心代码编写、仿真验证、IP核封装与参数化配置技巧。通过AXI-Lite总线实现动态配置,提升FPGA开发效率,适用于各种嵌入式系统通信需求。

weixin_29274969的博客 326

【Android开发经验】-- 如何实现RecyclerView子项的点击事件?

假设现在需要完成一个以下需求的任务,下面两个图左边是点击前未完成,右边是点击后已完成,如何实现点击图标切换另一个图标?由完成状态转变为未完成状态时,修改数据库中的字段isFinish为0,字段isFinish来保存是否完成,0表示未完成,1表示已完成。然后判断点击的ImageView视图是完成还是未完成,例:如果是完成状态,则改变显示图标为未完成且修改实例里保存的图标为未完成。holder.getAbsoluteAdapterPosition() 方法获取点击的子项,通过子项拿到对应的类的实例,

个人博客 1469

ros1 Noetic下运行cartographer算法进行2d建图

最近的工作重点放在机器狗的二次开发上,项目的需求是要升级机器狗的slam算法和导航避障算法,slam拟采用激光与视觉融合算法,激光slam就使用最为流行和实用的cartoghper算法。在这过程中遇到好多坑,希望看到这篇博客的人能少走弯路吧。我用的仿真机器人是wpr_simiulation。首先复制一份demo_revo_lds.launch文件和revo_lds.lua文件,修改成下面的样子。my_test.lua文件,base_link就是机器人的坐标系。下载与安装的博客有很多,我推荐。

sun5739的博客 1547

实现RecyclerView点击事件的探索

RecyclerView是一个官方介绍RecyclerView为在有限的窗口展现大量数据的控件。拥有类似功能的控件有ListView、GridView的控件,是support:recyclerview-v7中提供的控件。 RecyclerView的使用就不说了,说说RecyclerView中的item的点击事件怎么搞? 做法是在适配器中实现,并封装方法暴露给外部调用 1.新建一个接口,用接口...

qq_40731414的博客 1124

软件破解逆向安全(一)初识内存地址和偏移

工具:CE 内存:数字->存访在电脑中->内存 实例:如何修改植物大战僵尸阳光 内存搜索最核心:过滤数据 先用CE加载植物大战僵尸,如下图 我们可以看到目前我们的阳光数是50,我们尝试在ce里搜索精确数值,4 byte是int整数的表示。 我们发现有很多数据,尝试收集一个阳光变成75再次搜索: 我们发现就一个了,这时我们可以双击Value随便修改阳光的数值了。 这里我们说一下动态和静态地址 动态地址:临时用于存放数据的地址,黑色。特征:重新启动游戏地..

weixin_43781139的博客 2590

Redhawk:toggle rate从哪来?

redhwak中toggle rate的相关设置

m0_61544122的博客 8116

Recycleview的点击事件

对于recycleview都不陌生,下面分享一下关于recycleview的点击事件 新建一个RecyclerViewClickListener.javapublic class RecyclerViewClickListener implements RecyclerView.OnItemTouchListener { private int mLastDownX,mLastDownY;

Dang by my side 1258

恒玄BES调试笔记-BES2500如何OTA升级ANC和通透参数

前期量产软件anc参数主要是通过anc工具写入flash中,或者anc total gain通过美格信设备校准写入,对于量产后如果想要更新anc参数,如通透模式参数,则无法更新。 这个时候需要通过OTA升级软件,把相关anc参数内置到软件中,从flash中读取total gain。 1、更新强弱降噪和通透参数,由于涉及到个人参数就不列出来了,主要是改动以下相关参数。 extern struct_anc_cfg * anc_coef_list_50p7k[ANC_COEF_...

leezs的博客 2224

RecyclerView实现Item点击事件

RecyclerView本身没有实现点击事件,需要自定义接口进行实现。此处我在pub中实现这个共用接口,当然你写可以在当前package下随便什么类中进行实现或者单独一个文件,接下来就要改造这个Adapter了,只是设定监听事件了,但没有指定监听事件给谁,那点击之后是不会有反应的,还需要在 onCreateViewHolder 中绑定监听事件,接下来和正常ListView绑定监听事件的操作差不多。

曲幽 1万+

揭秘大厂 Unity 红点系统设计:别小看右上角那颗小红点,它能把你项目搞崩

本文详细探讨了游戏大厂如何设计高性能红点系统。红点作为提升用户活跃和转化率的重要工具,需要支持多级联动、动态判断和全局一致性。系统采用观察者模式和树形结构,分为数据管理、逻辑判定、订阅通知和UI展示四大模块,通过事件驱动方式实现高效刷新。文章特别强调了解耦设计、配置化管理和性能优化,并提出了热更新、数据分析等高级应用场景。最终指出,优秀的红点系统需要架构标准化、自动化配置和团队紧密协作,是大型游戏项目的关键技术基础。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 377

AutoSAR配置与实践(深入篇)5.4 OS原理(下 )- 内存保护(MPU)

ECU可能由内部模块、第三方模块等各模块集成的。需求对每个模块所定义的安全等级可能有差异,需要考虑不同安全等级的模块和代码间减少相互干扰,防止程序错误传播。可以理解为包含Task、Alarm、Counter、Schedule table、ISRs、Event等基本对象的容器,用于隔离Task/Alarm等,进行内存保护。

nihaoljq2010的博客 3536

【 Android 】RecyclerView 点击功能的实现

List list;i++){list.add("这是第"+i+"行数据");与作业一中的Fragment2文件代码相同,故不作分析。RecyclerView是在Android应用中显示列表数据的强大工具。更加深入了解了RecyclerView,利用适配器来将数据与列表项关联,以及如何为列表项设置点击事件。

m0_64974487的博客 3010

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RecyclerView的点击事件

文章目录实现recyclerView的子项点击事件 实现recyclerView的子项点击事件 第一种方法:我们可以这么做。在Adapter中,因为 内部类ViewHolder是调用父类中的构造函数super(itemView),这个itemView就是当前子项布局,可以直接在其中以itemView.setOnclickListener设置点击事件; 当然也可以在其中先找到子项布局中的各个控件,分别设置点击事件。如: public class StandTypeHolder extends Recycler

Dragon__Wu的博客 5096

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

RecyclerView嵌套RecyclerView,内层RecyclerView区域无法响应Item点击

问题描述 项目中遇到了一个RecyclerView内嵌套RecyclerView,内层RecyclerView的区域无法响应所在Item的点击事件的问题(就是点击外层不能触发所在条目的点击事件)。 解决方式(形式不同,原理相同) 方式一 viewHolder.rv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent ev.

Android格调小窝 2239

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android RecyclerView嵌套RecyclerView点击事件

Android RecyclerView嵌套RecyclerView点击事件

weixin_42504805的博客 5020

RecyclerView之点击item变色

在适配器里设置接口回调并刷新适配器,再定义一个int的变量 设置set get方法,在界面调用接口,把点击的下标利用int变量的set方法传送回适配器,并刷新适配器.再设置数据的onBindViewHolder方法里进行下标的判断如果相同设置颜色,如果不同设置初始化颜色.可以不考虑条目复用问题 RecyclerView适配器代码示例: package com.example.lenovo.i...

lizhong 6152

RecyclerView | 处理 RecyclerView 中的点击事件

本文是介绍 RecyclerView 入门 系列文章 的第三篇。如果您已经对创建 RecyclerView 有了一定的认识,请继续阅读本文。如果尚未熟悉,建议您首先阅读本系列中的 第一篇文章。 当使用 RecyclerView 显示列表数据的时候,您可能需要响应列表元素的点击事件。该响应处理包括: 打开包含更多数据的页面、显示 toast、删除某个元素等等。相关的响应事件虽然数不胜数,但是它们均需要通过 onClick() 来实现。 定义点击动作 在创建监听器之前,在 Activity 类中添加一个函数用.

谷歌开发者 1391

RecyclerView内嵌套RecyclerView导致外层item点击不响应

用RecyclerViewCommonAdapter时,recyclerView嵌套一个显示图片的recyclerView,外层recyclerView需要响应item的点击进行跳转,在嵌套的RecyclerView中点击无效。没用原生的Adapter写过,不知道会不会响应。 首先,需要知道触摸事件的响应机制是怎么样的:由上至下,最下层不消费后,则由下至上;然后需要了解一下这三个方法:dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent。 dispa

rhj的专栏 1830

RecyclerView实现点击切换

RecyclerView点击切换视图

qq_39792005的博客 2427

Android RecyclerView(三)RecyclerView的点击事件

项目完整代码 https://github.com/Phil-tom/Android-The-First-Line-of-Code/tree/main/Chapter3/RecyclerViewTest 和LIstView不同的是,RecyclerView并没有提供类似于setOnItemClickListener()这样的注册监听器方法,而是我们需要我们自己给子项具体的View去注册点击事件。 实际上,ListView在点击事件上的处理并不人性化,setOnItemClickListener()方法注册的

guliguliguliguli的博客 1513

RecyclerView中添加Item点击事件

RecyclerView没有像ListView那样提供OnItemClick,OnItemLongClick等回调方法,所以我们需要自己实现它的Item点击事件。 一,首先,需要定义一个回调接口来实现OnClick方法,并在XXXAdapter类中声明一个接口变量。 public class MainNewsRvAdapter extends RecyclerView.Adapter<Mai...

ronaldinho2014的专栏 5755

Recyclerview添加点击监听功能

我们都知道RecyclerView不像Listview那样搭配有点击和长按监听,但是这并难不倒灵活的Recyclerview。 实现点击监听的思路大概是这样: 在Recyclerview相关的Adapter里面,写一个内部监听接口,接口里面写一个点击方法。然后在Adapter定义一个空的监听接口,另外在Adapter里面写一个点击设置公共方法,这个方法是供Recyclerview调用的,也就是

huangjunyu199115的博客 1026

内部RecyclerView与外部RecyclerView的点击事件保持一致

先看一张图: 图中的列表是有两个RecyclerVew组合成的,外部RecyclerView的LayoutManager为LinearLayoutManager,内部RecyclerView的LayoutManager为GridLayoutManager。区域1是外部Item,区域2是内部Item,区域3是内部RecyclerView。因为内部RecyclerView的item个数较少,所以...

SkySmile1992的博客 3170

处理RecyclerView的点击事项

之前作者只是建立了不能响应点击事件的RecyclerView,然而需要实现RecyclerView的点击事件,就需要建立一个接口(在适配器中)。之前操作的链接 http://blog.youkuaiyun.com/maokai1229/article/details/72123600 因为在适配器的ViweHolder中,会有许多Item的新建,而把item看成一个按钮,就需要事先实现按钮的接口(这里不需要

海象先生 3514
上一篇: RecyclerView的使用
下一篇: 内存优化
许菠萝
博客等级 码龄10年 263粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值