【问题标题】:Android: How to access viewholder at position (from outside the adapter)Android:如何访问位置的视图(从适配器外部)
【发布时间】:2015-09-29 21:13:09
【问题描述】:

我有一个回收器视图适配器。 所以它拥有 3 个视图。只是每个视图都有 ImageView。 当用户单击图像时(3 个中的 1 个),它会创建使用照片应用程序的新意图,并在完成后将其返回给调用者。调用者(创建 RecyclerView 及其适配器的活动)处理 onActivityResult。从那里我需要将在上述意图中拍摄的缩略图设置为相应的选定 ImageView。

问题。在我的 Activity 中,我如何知道要修改哪个 imageView(可用 3 个)?我的 Activity 只知道点击了回收器视图适配器中哪个项目的位置。

是否可以通过仅使用位置以某种方式获取对适配器中特定 imageView 的引用? 所以是这样的:来自活动:adapter.getImageView(position)

编辑: 所以我的解决方案是:我一直在跟踪适配器中的所有 ImageView,并将它们的 ref 存储在 ArrayList 中的`onBindViewHolder。所以现在我可以使用 adapter.getImageView(position)

【问题讨论】:

  • 您如何为您的适配器上的每个项目分配值?我会假设你使用数组列表对吗?如果是这样,您不能尝试使用适配器位置引用数组列表的索引吗?它对我有用
  • 我需要访问一个特定的视图,而不是一个值。
  • 问题是,使用照片应用程序捕获图像的唯一方法是创建意图,无法处理实际适配器中的响应。我需要在我的适配器中访问一个特定的 ImageView.... 或者我猜在每个 onBindViewHolder 我应该只跟踪数组列表中的 ImageViews.. 嗯
  • 是的,这是一个想法……我只是正确地重新阅读了您的问题……尝试使用数组列表!几个月前我遇到了类似的问题,我相信数组列表为我解决了这个问题

标签: android android-recyclerview android-viewholder


【解决方案1】:

我相信您可以在适配器中为您的 ImageView(或您的行视图)设置 OnClickListener。只是从那里发射意图。

【讨论】:

  • 是的,我已经这样做了。但是要接收响应,我必须在适配器外部的活动/片段中进行。然后从 Activity/fragment 我需要在我的适配器中找到正确的 ImageView。我现在正在使用 ArrayList ,它似乎正在工作。
  • 是的,如果你的adapter的数据集是ImageView,那么最后可能会很好。我确实遇到了与您类似的问题,并且必须在我的适配器和活动中创建一个 onActivityResult 的静态实例来解决它。
  • 没有试图展示你的观点,很懒的回答
【解决方案2】:

只需向适配器添加方法即可返回对所需位置图像的引用 适配器包含您传递给它的对象列表,因此您可以根据需要操作它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多