在 Android 中获取 Activity 内部适配器

Getting the Activity inside Adapter in Android

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

GlideToVectorYou.justLoadImage(activity, IMAGE_URI, targetImageView)

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

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

谢谢!

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

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)

您需要 activity 参考资料。 R.layout.somethinghere 是布局参考。

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

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