在 RecyclerView 本身而不是项目上设置 OnClickListener

2024-01-06

我想设置一个OnClickListener on a RecyclerView, 不在其物品上以便当用户点击时触发点击事件RecyclerView(即使它是空的或装满了物品)。

  • 我正在使用MVVM
  • I tried mRecyclerView.setClickable(true),不工作

我想要的是

mRecyclerView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // do something
    }
});

我的适配器类

public class TaskItemAdapter extends RecyclerView.Adapter<TaskItemAdapter.BaseItemAdapterViewHolder> {
    private static final String TAG = TaskItemAdapter.class.getSimpleName();
    private List<Task> mTaskList;
    private View.OnLongClickListener mOnLongClickListener;

    public TaskItemAdapter(List<Task> taskList, View.OnLongClickListener longClickListener) {
        mTaskList = taskList;
        mOnLongClickListener = longClickListener;
    }

    @NonNull
    @Override
    public BaseItemAdapterViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (parent instanceof RecyclerView) {
            int layoutId = R.layout.item_list_main;
            View view = LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false);
            view.setFocusable(true);
            return new BaseItemAdapterViewHolder(view);

        } else {
            throw new RuntimeException(TAG + "Not bound to recyclerView");
        }
    }

    @Override
    public void onBindViewHolder(@NonNull BaseItemAdapterViewHolder holder, int position) {
        Task task = mTaskList.get(position);
        holder.mItemTextView.setText("- " + task.getName());

        holder.itemView.setTag(task);
        holder.itemView.setOnLongClickListener(mOnLongClickListener);
    }

    @Override
    public int getItemCount() {
        return mTaskList.size();
    }

    public void loadItems(List<Task> taskList) {
        mTaskList = taskList;
        notifyDataSetChanged();
    }

    public class BaseItemAdapterViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.item_textView)
        TextView mItemTextView;

        public BaseItemAdapterViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }
}

mRecyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
        return true;
    }
});

然后处理你想要的MotionEvent类型即可。如果您不希望 RecylerView 用它做任何其他事情,则返回 true。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 RecyclerView 本身而不是项目上设置 OnClickListener 的相关文章

  • 如何快速自动发送FCM或APNS消息?

    我正在开发一项后端服务 通过 FCM 或 APNS 向移动应用程序发送推送通知 我想创建一个可以在一分钟内运行的自动化测试 并验证服务器是否可以成功发送通知 请注意 我不一定需要检查通知是否已送达 只需检查 FCM 或 APNS 是否已成功
  • 在包“android”中找不到属性“backgroundTint”的资源标识符

    我发现了一些视图 xml 属性 例如backgroundTint backgroundTintMode 但是当我使用它作为视图属性定义时 Eclipse 显示错误 No resource identifier found for attri
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • Android Activity 生命周期函数基础知识

    我正在测试这段代码 它显示活动所处的状态 public class Activity101Activity extends Activity String tag Lifecycle Called when the activity is
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • Resharper 总是建议我制作 const string 而不是 string

    哪一个好 string sQuery SELECT FROM table or const string sQuery SELECT FROM table 为什么 resharper 总是建议我这样做 后者更好 这意味着 这不是实例变量 因
  • AIX 上的 proftpd 静态编译

    我想在 AIX 上编译 proftpd 使其可以部署在其他服务器上 而不必在每台服务器上重新安装所有 gnu lib 库 我已经设法动态编译它 但我无法使用该选项来编译它 LDFLAG Wl static 就像 Proftpd 官方文档中的
  • 如何在 Debian Wheezy armel 上安装 g++ 4.9?

    我的 Debian 7 armel 嵌入式系统目前有 g 4 6 我想升级到 g 4 9 以使用新的 C 11 功能 我怎么做 我当前的sources list内容是 deb http security debian org wheezy
  • Spreadsheet_excel_reader 日期格式[重复]

    这个问题在这里已经有答案了 我正在使用电子表格 excel reader 读取 php 上的 xls 文件并将数据插入到 oracle 数据库中 我正在使用下面的代码 filename test xls reader new Spreads
  • EF 3.x 中最简单的分组依据失败,并显示“不支持客户端分组依据”

    目前正在使用 EF Core 版本 3 1 1 进行测试 当我搜索时 我找到了对此问题的引用 但我没有看到任何关于为什么会发生这种情况的明确答案 以及它是否是一个将被修复的错误或是否是预期的行为 这就像看起来一样简单 BatchReques
  • 通过 WordPress 管理员不断收到此控制台错误

    未捕获 承诺中 message 侦听器通过 r 指示异步响应 在收到响应之前关闭了通道 消息 侦听器通过返回 true 指示异步响应 但消息通道在响应之前关闭收到 原型 对象 Promise then 异步 匿名 geolocation s
  • 从代码隐藏访问 asp:content

    好吧 我是一名经验丰富的 Web 开发人员 但有时 ASP Net 会欺骗我 我在 asp net 中有一个母版页 然后我有一个基于该母版页 home aspx 的页面 现在在 home aspx cs 中 我想访问 asp content
  • 停止自动隐藏托盘通知图标

    每当我的 Windows 窗体应用程序第一次运行时 托盘图标保持可见状态大约不到一分钟 然后自动隐藏 我该怎么做才能让它粘住而不是自动隐藏 我尝试搜索 但找不到任何有用的信息 看来这是 Windows 7 及更高版本的默认行为 我想知道是否
  • 如何在 Amazon EC2 Ubuntu 服务器上设置 GUI

    我正在使用亚马逊 Ubuntu EC2 实例 它只有一个命令行界面 我想为该服务器设置 UI 以使用远程桌面工具进行访问 有没有办法将GUI应用到EC2实例 这是可以做到的 以下是设置 GUI 的步骤 创建新用户 使用密码登录 sudo u
  • 使用Java注解的ViewResolver

    是否有可能在Spring http en wikipedia org wiki Spring Framework3 1 1 使用Java注释配置视图解析器 我已经使用 Java 注释完成了所有配置 但我陷入困境视图解析器 Code pack
  • 如何使用 BigDecimal 显示始终保留 2 位小数的数字?

    我在用大十进制以获得一些价格值 需求是这样的 无论我们从数据库中获取什么值 显示的值都应该有2个小数点 Eg 获取的值为 1 应显示为 1 00获取的值为 1 7823 应显示为 1 78 我在用setScale 2 BigDecimal
  • 如何在javascript中匹配由已知前缀和后缀包围的子字符串

    给定一个字符串 例如 示例字符串与要匹配的预期嵌套字符串 如何隔离仅知道其前缀和后缀的子字符串 例如之间intended and to match 使用正则表达式非捕获括号 https developer mozilla org en US
  • 如何检测 UIImage 中的 alpha 像素

    如果用户触摸位于 alpha 像素 透明 上 我尝试将 hitTest 传递给我下面的元素 我不知道的是如何确定 CGPoint 20 20 上的像素是否是完整的 alpha iOS 4 谢谢 奥 可以获取像素RGBA 然后获取alpha
  • 将请求从servlet转发到jsp

    我有一个小型应用程序 HTML 表单 作为控制器的 servlet 和 jsp 文件 我尝试弄清楚为什么我无法将请求从 servlet 转发到 jsp 文件 问题是从 html 提交后 显示 HTTP Status 404 申请流程 从 h
  • redshift select unique 返回重复值

    我有一个数据库 其中每个对象属性都存储在单独的行中 附加的查询不会在 redshift 数据库中返回不同的值 但在任何 mysql 兼容数据库中测试时可以按预期工作 SELECT DISTINCT distinct value FROM S
  • 如何确定渲染 HTML 页面需要多长时间?

    我有一个大页面 其中有一个大 HTML 表格 在 Internet Explorer 中 渲染内容需要很长时间 可能需要 10 15 秒来渲染 有没有一种方法可以使用 JavaScript 或其他方法来确定页面何时开始渲染以及何时完全完成渲
  • 读取 .config 文件

    目前我有一个名为 router js 的文件 设置如下 var Server require mongodb Server var MongoDB require mongodb Db var dbPort 31979 var dbHost
  • “org.eclipse.jdt.launching.IVMInstall.getLibraryLocations()”的问题

    当我尝试在 Eclipse 中运行 Java 程序时 出现以下错误 在 启动 ConvertExcelToJSON 期间发生内部错误 无法调用 org eclipse jdt launching IVMInstall getLibraryL
  • 将 LEFT OUTER JOIN 查询转换为 Ecto

    我不知道如何将 SQL 语句转换为 Ecto 凤凰城设置 mix phx gen html Location Country countries name mix phx gen html Location FederalState fed
  • 在 RecyclerView 本身而不是项目上设置 OnClickListener

    我想设置一个OnClickListener on a RecyclerView 不在其物品上以便当用户点击时触发点击事件RecyclerView 即使它是空的或装满了物品 我正在使用MVVM I tried mRecyclerView se