在 Kotlin ViewModel 类中期望有属性的 getter 或 setter。

9

我有以下的ViewModel类:

class PersonViewModel(
        context: Application,
        private val dataSource: MoviesRemoteDataSource)
    : AndroidViewModel(context) {

    internal val compositeDisposable = CompositeDisposable()
    val person: ObservableField<Person>()
    private val isVisible = ObservableBoolean(false)

    fun showPerson(personId: String) {
        val personSubscription = dataSource.getPerson(personId)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({ person ->
                    isVisible.set(true)
                    this.person.set(person)
                }
                ) { throwable -> Timber.e(throwable) }

        compositeDisposable.add(personSubscription)
    }
}

这是Person类:

class Person(
        @SerializedName("birthday")
        var birthDay: String?,
        @SerializedName("deathday")
        var deathDay: String?,
        var id: Int,
        @SerializedName("also_known_as")
        var alsoKnowAs: List<String>,
        var biography: String,
        @SerializedName("place_of_birth")
        var placeOfBirth: String?)

在ViewModel中,这一行显示了一个错误:

val person: ObservableField<Person>()

它的意思是:需要属性的getter或setter

非常感谢您的帮助。

2个回答

34

很可能需要替换:

val person: ObservableField<Person>()

with:
val person = ObservableField<Person>()

这将设置person的初始化值为您正在创建的ObservableField<Person>


感谢@CommonsWare - Ali

4

看你的代码:

val person: ObservableField<Person>()

您有一个简单的语法错误,是在类型后面的括号!请将其删除或更改成赋值符号:

val person: ObservableField<Person>

或者

val person = ObservableField<Person>()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接