首页 > 解决方案 > 没有主构造函数,超类型初始化是不可能的

问题描述

我想创建一个扩展 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 给了我一个错误信息:没有主构造函数,超类型初始化是不可能的。

标签: androidkotlin

解决方案


看起来您只想TestAdapter拥有一个构造函数(带有参数的构造函数),对吧?如果是这样,您应该重写它并将参数作为类声明的一部分而不是使用单独的constructor,如下所示:

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

相反,如果您想要TestAdapter有两个构造函数(一个没有参数,一个有参数),那么您需要按如下方式进行:

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

推荐阅读