在 Kotlin 中构建 GridView 时无法传递上下文

Cannot pass Context when building a GridView in Kotlin

我正在寻找在 Kotlin 中创建 GridView 的帮助。请不要向我展示 JAVA 代码,因为我已经尝试过改编各种 JAVA 示例。

所以,我创建了 BaseAdapter 的扩展,但我无法传递上下文。 Android documentation 显示了它是如何通过调用 gridview.setAdapter(new ImageAdapter(this)); 来访问的。

将 BaseAdapter 分配给我的 activity

中的 GridView 元素
collectionView.adapter = ButtonAdapter()

我试过在内部传递上下文,但我收到太多参数的错误

collectionView.adapter = ButtonAdapter(baseContext())

我的 BaseAdapter 扩展,我尝试通过

初始化它
class ButtonAdapter : BaseAdapter() {
       var con: Context? = null
           //.....
       fun ButtonAdapter(context: Context) {
           con = context
       }
}

我在尝试传递上下文并创建 GridView 时做错了什么?预先感谢您的帮助。

像这样更改您的 class:

class ButtonAdapter(val context: Context) : BaseAdapter() {
 // ...

然后你可以传递上下文:

ButtonAdapter(context)

fun 用于函数。要通过构造函数传递数据,您可以像上面那样更改代码,这是主要的构造函数。

添加 val 是可选的。它使 context 成为 class 的 属性,以便您可以访问 class.

中的 context

您可以在主构造函数中发送它,如下所示。

public class ButtonAdapter(context: Context) : BaseAdapter() {

    private val mInflator: LayoutInflater

    init {
        this.mInflator = LayoutInflater.from(context)
    }
}

###这是说明

//你将把它改成接受上下文

class ClassName(val mcontext: Context):

//在Activity中传递上下文

ClassName(this).methodCall()