2017-08-23 45 views
-1

我正在寻找一些帮助在Kotlin中创建GridView。请不要让我看看JAVA代码,因为我已经尝试过适应各种JAVA示例。在Kotlin中构建GridView时无法传递上下文

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

在我的活动分配BaseAdapter到GridView元素

collectionView.adapter = ButtonAdapter() 

我试图传递上下文里面,但我得到的错误太多参数

collectionView.adapter = ButtonAdapter(baseContext()) 

我BaseAdapter用我尝试将其初始化的方法进行扩展

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

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

回答

1

改变你的类是这样的:

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

然后你就可以通过上下文:

ButtonAdapter(context) 

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

添加val是可选的。它使context成为该类的一个属性,以便您可以访问该类中的context

+0

哇,这太明显了,这很尴尬。一旦10分钟过去,将接受答案。谢谢 –

+1

高兴地帮助:)每个人都会犯错误。我建议你也阅读[doc](https://kotlinlang.org/docs/reference/classes.html)。 – Bob

+0

搜索时看到文件几次,但它只是没有沉入:) –

2

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

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

    private val mInflator: LayoutInflater 

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