分类器没有伴随对象,因此必须在这里初始化

Far*_*ana 19 android interface kotlin

我有一个活动,其中声明了一个接口,并且我有一个ViewModel已覆盖接口的类,并且想要调用接口的方法Activity以在ViewModel类中进行更改,但无法调用方法,ActivityViewModel 类没有伴随对象,因此必须在这里初始化。如何解决这个问题?

var selection: setSelectionSubRow? = null
    selection=RowSubTShirtViewModel
    selection!!.setNameSelection(false)
Run Code Online (Sandbox Code Playgroud)

上面的代码在Activity其名称中TShirtActivity

下面的代码来自RowViewModel

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

fun getImageDrawable(): Drawable {
    return if (tShirtBean.isSelected)
        ContextCompat.getDrawable(context, R.drawable.green_border_circle)!!
    else
        ContextCompat.getDrawable(context, R.drawable.border_circle)!!
}

override fun setNameSelection(selection: Boolean) {
    if (parentPosition == 6) {
        if (position == 1) {
            tShirtBean.isSelected = false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*red 8

这一行selection=RowSubTShirtViewModel引用视图模型,就好像它是一个命名对象,这意味着你应该编写而不是类对象:

object RowSubTShirtViewModel {
   //...
}
Run Code Online (Sandbox Code Playgroud)

但是,由于情况并非如此,kotlin 告诉您不能像那样引用它并且必须对其进行初始化。构造函数有很多参数让我猜测它们是什么,但基本上你必须传递它们:

selection=RowSubTShirtViewModel(/*parameters here*/)
Run Code Online (Sandbox Code Playgroud)