代码之家  ›  专栏  ›  技术社区  ›  Ali

Kotlin ViewModel类中需要属性getter或setter

  •  -1
  • Ali  · 技术社区  · 7 年前

    我有以下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)
        }
    }
    

    这是个人级别:

    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>()
    

    property getter or setter expected

    谢谢你的帮助。

    2 回复  |  直到 7 年前
        1
  •  27
  •   CommonsWare    7 年前

    最有可能的情况是,替换:

    val person: ObservableField<Person>()
    

    与:

    val person = ObservableField<Person>()
    

    这就建立了 person 要使用 ObservableField<Person> 您正在创建的。

        2
  •  4
  •   Amani    7 年前

    查看您的代码:

    val person: ObservableField<Person>()
    

    你有一个简单的 语法错误 这个 类型后面加括号! 删除它们或将冒号更改为指定符号:

    val person: ObservableField<Person>
    

    val person = ObservableField<Person>()
    
    推荐文章