RecyclerView 缺少 onItemClickListener()?为什么以及如何适应
简介
RecyclerView 是为了取代 ListView 而引入的,它明显删除了 onItemClickListener()。这种缺失引发了对其推理的质疑,并为实现项目点击处理带来了挑战。
为什么 Google 删除了 onItemClickListener()
Google 由于性能和可用性而停止了 onItemClickListener()的担忧。使用 ListView,内部元素内会发生点击侦听器冲突,从而导致不可预测的行为和大量用户查询。
替代方法
为了弥补缺少的 onItemClickListener(),开发人员采取了各种方法:
1。重写 RecyclerView 适配器中的 onClick():
此方法将 onClick 处理委托给适配器的 ViewHolder。但是,它需要为每个 ViewHolder 中的每个 View 手动设置点击监听器,这对于复杂的布局来说会变得很麻烦。
2.使用 RxJava 公开 Observable:
利用 RxJava,您可以创建一个 PublishSubject 来发出单击的项目数据。这种方法将点击处理与适配器分离,提供了更大的灵活性和可测试性。
代码示例:
public class ReactiveAdapter extends RecyclerView.Adapter<myadapter.viewholder> { ... private final PublishSubject<string> onClickSubject = PublishSubject.create(); ... @Override public void onBindViewHolder(final ViewHolder holder, int position) { ... holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onClickSubject.onNext(element); } }); } ... }</string></myadapter.viewholder>
其他注意事项
自定义监听器ViewHolder:
此方法允许您为 ViewHolder 中的不同视图类型定义自定义单击侦听器。它为复杂布局的点击处理提供了更大的粒度。
委托给 Orchestrator:
您可以将点击处理委托给更高级别的组件,例如 Fragment 或Activity,用于处理点击事件并跨多个片段或实现一致的行为
结论
虽然 RecyclerView 缺少 onItemClickListener() 最初看起来可能令人惊讶,但它最终为开发人员提供了更高的灵活性和项目点击处理的自定义选项。通过采用上述推荐的方法,您可以在 RecyclerView 中有效地实现点击事件,利用其多功能性和性能优势。
以上是为什么RecyclerView去掉了`onItemClickListener()`,如何有效处理Item点击?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver Mac版
视觉化网页开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3汉化版
中文版,非常好用