【问题标题】:Getting the Activity inside Adapter in Android在 Android 中获取 Adapter 中的 Activity
【发布时间】:2022-01-21 14:29:04
【问题描述】:

我正在尝试访问我的 Imageview 所在的活动,因此我可以使用 SVG 类型的图像的 URL 并使用 GlideToVectorYou 库将其显示给用户。

GlideToVectorYou.justLoadImage(activity, IMAGE_URI, targetImageView)

但是当我尝试使用 R.layout.activityname 访问活动时,会出现语法错误。 这是我正在使用的代码

 Uri myurl = Uri.parse(match.getFlag());
 GlideToVectorYou.justLoadImage(R.layout.item_basketball, myurl, iv_location);

谢谢!

【问题讨论】:

    标签: java android android-glide


    【解决方案1】:

    R.layout.item_basketball 只是您的活动布局的整数 ID,而不是活动实例本身。如果您想要适配器中的活动,则需要在构造适配器时将其传入并将其保存为类成员(下面的示例),或者检查您的适配器基类是否已经可以通过getActivity() 或@987654323 提供它@ 或类似的方法。

    class MyAdapter(private val activity: Activity) : BaseAdapter() {
        fun someMethod() {
            // then you can access "activity" in your adapter methods
            GlideToVectorYou.justLoadImage(activity, IMAGE_URI, targetImageView)
        }
    }
    

    当您在 Activity 中创建它时,您只需执行类似的操作

    val adapter = MyAdapter(this)
    

    【讨论】:

    • 非常感谢,这很好,但我发现 Glide 库也可以处理 .SVG 图像。答案对于处理适配器会有不同的帮助。
    • 是的,但是我在阅读了一些文档后发现 Glide 库可以处理这些类型的图像,所以我不需要使用 GlideToVector 库来处理 SVG 图像,因此,不需要从适配器获取活动。
    • 有道理,很高兴它对你有用
    【解决方案2】:

    您需要一个活动参考。 R.layout.something这里是布局参考。

    在您的适配器构造函数中添加一个活动参数并在适配器内部使用它。

    如果您从活动中调用适配器构造函数,只需将“this”作为参数传递。如果从片段调用,使用“requireActivity”(如果使用 kotlin)或类似方法(例如 getActivity)如果使用 Java

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      相关资源
      最近更新 更多