本文是介绍 RecyclerView 入门 系列文章 的第三篇。如果您已经对创建 RecyclerView 有了一定的认识,请继续阅读本文。如果尚未熟悉,建议您首先阅读本系列中的 之一篇文章。
当使用 RecyclerView 显示列表数据的时候,您可能需要响应列表元素的点击事件。该响应处理包括: 打开包含更多数据的页面、显示 toast、删除某个元素等等。相关的响应事件虽然数不胜数,但是它们均需要通过 onClick() 来实现。
在创建监听器之前,在 Activity 类中添加一个函数用于处理点击之后的响应操作。
<!--Copyright2019GoogleLLC. SPDX-License-Identifier:Apache-2.0-->
privatefunadapterOnClick(flower:Flower){ valintent=Intent(this,FlowerDetailActivity()::class.java) intent.putExtra(FLOWER_ID,flower.id) this.startActivity(intent) }
接下来,修改 Adapter 的构造函数来传入 onClick() 函数。
<!--Copyright2019GoogleLLC. SPDX-License-Identifier:Apache-2.0-->
classFlowersAdapter(privatevalonClick:(Flower)->Unit): ListAdapter<Flower,RecyclerView.ViewHolder>(FlowerDiffCallback())
在 Activity 类中,在初始化 Adapter 的时候传入刚刚创建的点击事件函数。
<!--Copyright2019GoogleLLC. SPDX-License-Identifier:Apache-2.0-->
valflowersAdapter=FlowersAdapter{flower-> adapterOnClick(flower) }
现在响应处理已经定义好了,可以将它关联到 Adapter 的 ViewHolder 了。
修改 ViewHolder,将 onClick() 作为参数传入。
<!--Copyright2019GoogleLLC. SPDX-License-Identifier:Apache-2.0-->
classFlowerViewHolder(itemView:View,valonClick:(Flower)->Unit): RecyclerView.ViewHolder(itemView)
在初始化的代码中,调用 itemView 的 setOnClickListener{}。
<!--Copyright2019GoogleLLC. SPDX-License-Identifier:Apache-2.0-->
init{ itemView.setOnClickListener{ currentFlower?.let{ onClick(it) } } }
搞定!现在您的 RecyclerView 可以响应点击事件了。
编程快乐!
请查阅包含 onClick() 的 完整示例。
感谢您阅读 RecyclerView 系列 文章的第三篇。请继续关注未来更多关于 RecyclerView 的内容。
俄罗斯关联的黑客组织 Stormous 声称已成功入侵可口可乐公司,并公开售卖大量数据。Stormous 表示窃取了 161GB 的财务数据、密码和账户,然后以 644 万美元或 1600 万个比特币的价格出售这些数据。 Stormous 在宣布成功入侵之前,曾在 Telegram 上发起投票,询...
虽然在 2021 年微软就已针对 Hive 勒索软件发布 Exchange 服务器的安全补丁,并敦促企业及时进行部署,但是依然有一些组织并没有及时跟进。消息称这些尚未跟进的组织近日再次遭受了 Hive 勒索软件的攻击,被黑客获得了系统权限。 在攻击获得系统权限之后,该勒索软件就会通过 PowerSh...
近日 Android 设备被爆存在安全漏洞,但根源来自于苹果的无损音频编解码器(ALAC)。目前,美国市场 95% 的 Android 设备来自于高通和联发科,安全公司 Check Point 指出尚未安装 2021 年 12 月 Android Security Patch 的设备都存在“Out-...
Hackernews 编译,转载请注明出处: 在流行的包管理器中已经揭露多个安全漏洞,如果被潜在黑客利用,可能被滥用来运行任意代码和访问敏感信息,包括受感染设备的源代码和访问令牌。 然而,值得注意的是,这些漏洞要求目标开发人员同时处理一个受影响的软件包管理器和一个恶意软件包。 So...
Hackernews 编译,转载请注明出处: 网络攻击的数量和复杂程度日益增加,自然而然地促使许多公司使用更多的网络安全技术。我们知道加强威胁检测能力对于保护是必要的,但是他们也导致了几个意外后果。“越多并不总是越好”的格言非常适合这种情况。 网络安全公司 Cynet 即将举行的一...
一位最近出院的心脏病患者正在使用智能手表来帮助监测他的心电图信号。这款智能手表看起来非常安全,但处理该健康信息的神经网络使用的是私人数据,这些数据仍有可能被恶意代理通过侧信道攻击窃取。 边信道攻击试图通过间接利用一个系统或其硬件来收集秘密信息。在一种类型的边信道攻击中,精明的黑客可以在神经网络运行...