инициализация супертипа невозможна без первичного конструктора - PullRequest
0 голосов
/ 31 октября 2018

Я хочу создать адаптер расширения 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 голосов
/ 31 октября 2018

Похоже, вы хотите, чтобы TestAdapter имел только один конструктор (тот, что с параметрами), верно? Если это так, вы должны переписать его и поместить параметры как часть объявления класса, а не использовать отдельный constructor, например:

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

Если, наоборот, вы хотите, чтобы TestAdapter имел два конструктора (один без параметров, а другой с параметрами), то вам нужно сделать это следующим образом:

class TestAdapter() : BaseAdapter() {
    constructor(mData: LinkedList<String>?, mContext: Context?) : this() {
       // ...
    }
}
0 голосов
/ 31 октября 2018

используйте 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
}

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...