Значение по умолчанию в конструкторе, показывающее ошибку в Kotlin - PullRequest
0 голосов
/ 27 ноября 2018

Я делаю то же самое, что и здесь и здесь , но с ошибкой

это мой класс с primary constructor без secondary constructor нет init блок.

class RowSubTShirtViewModel(private val subTShirtAdapter: SubTShirtAdapter, val context: TShirtActivity,
                            val tShirtBean: CommonItemBean, private val parentPosition: Int, private val position: Int) : BaseObservable(), TShirtActivity.setSelectionSubRow {}

создание объекта типа val vm=RowSubTShirtViewModel() выдача ошибки

  • Создание абстрактной функции 'RowSubTShirtViewModel'
  • Создание функции 'RowSubTShirtViewModel'
  • Создать вспомогательный конструктор
  • Не передано значение для параметра

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вы не используете аргументы по умолчанию в своем конструкторе.Если вы хотите использовать, он должен выглядеть как

class RowSubTShirtViewModel(
    private val subTShirtAdapter: SubTShirtAdapter = defaultSubTShirtAdapter,
    val context: TShirtActivity = defultContext,
    val tShirtBean: CommonItemBean = defaultTShirtBean,
    private val parentPosition: Int = defaultParentPosition,
    private val position: Int = defaultPosition) : BaseObservable(), TShirtActivity.setSelectionSubRow {}
0 голосов
/ 27 ноября 2018

Вам необходимо явно передать параметры первичному конструктору:

//init params
val subTShirtAdapter = ...
val context = ...
val tShirtBean = ...
val parentPosition = ...
val position = ...

//init viewModel
val vm = RowSubTShirtViewModel(subTShirtAdapter, context, tShirtBean, parentPosition, position)

Если вы не назначите значения по умолчанию для параметров, например:

class RowSubTShirtViewModel(private val subTShirtAdapter = YourAdapter(),...)

В вашем случае вы можете сделать что-то вроде этого:

class RowSubTShirtViewModel(val context: TShirtActivity, 
    private val subTShirtAdapter: SubTShirtAdapter, 
    val tShirtBean: CommonItemBean, 
    private val parentPosition: Int = 0, 
    private val position: Int = 0) : BaseObservable(), TShirtActivity.setSelectionSubRow {}

// and then create an instance
val vm = RowSubTShirtViewModel(yourContext, yourAdapter, yourShirtBean)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...