2017-08-23 48 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) 
    } 
}