没有主构造函数,就不可能进行超类型的初始化

时间:2018-10-31 07:02:50

标签: android kotlin

我要创建一个扩展BaseAdapter的适配器,如下所示:

        class TestAdapter: BaseAdapter() {
            var mData:LinkedList<String>?=null
            var mContext:Context?=null

            constructor(mData: LinkedList<String>?, mContext: Context?) : super() {
                this.mData = mData
                this.mContext = mContext
            }
           Blablabla…….
        }

但是AS给我一个错误消息:没有主构造函数就无法进行超类型初始化。

2 个答案:

答案 0 :(得分:2)

您似乎只希望TestAdapter有一个构造函数(一个带有参数的构造函数),对吗?如果是这样,您应该重新编写它,并将参数作为类声明的一部分,而不是使用单独的constructor,例如:

class TestAdapter(mData: LinkedList<String>?, mContext: Context?) : BaseAdapter()

相反,如果您希望TestAdapter有两个构造函数(一个没有参数,一个带有参数),那么您需要执行以下操作:

class TestAdapter() : BaseAdapter() {
    constructor(mData: LinkedList<String>?, mContext: Context?) : this() {
       // ...
    }
}

答案 1 :(得分:0)

使用this()代替super()。因为BaseAdapter()已在类

中扩展
import android.content.Context
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import java.util.*

class TestActivity() : BaseAdapter() {

 var mData: LinkedList<String>?=null
 var mContext: Context?=null

constructor(mData: LinkedList<String>?, mContext: Context?) : this() {
this.mData = mData
this.mContext = mContext
}

 }