【问题标题】:Listening for click on anything but the current item in a RecyclerView?聆听点击 RecyclerView 中当前项目以外的任何内容?
【发布时间】:2016-05-02 22:56:10
【问题描述】:

我有一个RecyclerView。我在RecyclerView 中的某些项目上有一个longClick 听众。如果此侦听器被调用/激活,那么它应该侦听对任何已被 longClicked 的项目的点击。我该怎么办?

我尝试在RecyclerView 本身上设置onClickListener,但这没有用。

补充:原来的问题

项目上的longClick 用于显示替代视图,类似于 Android 6 中通知的工作方式。如果单击其他内容,我想再次隐藏此替代视图。

【问题讨论】:

  • 请添加相关代码。
  • 我看不出代码在这个问题中的相关性。我不是在询问我的代码抛出的错误,而是在询问有关如何解决此问题的想法。如果您需要查看代码,您需要告诉我您需要什么。
  • 我不确定这是否可能。一个项目接收其他项目的点击。即使是这样,这似乎也是一种不好的方法。我相信无论您尝试使用这种方法做什么,都可以以更好、更轻松的方式完成。如果您可以说明您的原始问题(为什么需要这样做),那么可能可以决定一种方法。
  • @varunkr 我添加了事件链的描述
  • 点击了其他东西?你的意思是屏幕上的任何地方或列表中的其他项目?顺便说一句,这似乎是我给出答案的问题。你基本上想隐藏这个替代视图,所以你需要做的就是编辑和更新你的 recyclerView 项目到以前的状态!

标签: android onclicklistener android-recyclerview


【解决方案1】:

一种方法是在你的 recyclerView 适配器中有一个方法 editItem ,它基本上可以编辑一个项目。单击另一个项目时,只需编辑上一个项目

public void editItem(int position, Item item) {
        itemList.remove(position);     // Removing the changed item
        itemList.add(position, item);  // Adding back your old item
        notifyItemChanged(position);   // Notifying
    }

【讨论】:

  • 我认为您误解了这个问题。我不是在问如何更改项目,我是在问我应该如何监听 除了当前项目之外的任何内容的点击。
  • 哦,您的意思是您希望更改的项目根本不应该收到点击?
  • 他们应该这样做,但它们是分开的。更改后的项目工作正常,我只想在单击不是当前项目的内容时恢复为原始项目。
  • “如果点击了不是当前项目的东西,我只想恢复到原来的状态”这是否意味着您要更改更改的项目?抱歉,您的问题有点不清楚。
  • 我必须同意这一点,但结合标题,事实并非如此。不过我会改的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 2020-11-19
  • 2019-12-01
  • 1970-01-01
相关资源
最近更新 更多