打开编辑屏幕时,我的微调框未设置位置

时间:2018-08-07 15:03:41

标签: android kotlin android-room android-livedata android-viewmodel

我为此Spinner苦苦挣扎。经过多次尝试,我发现检索位置的方法是将其存储在数据库中。我是这样的:

@Entity(tableName = "schedules")
data class Schedule(
    @PrimaryKey(autoGenerate = true) var id: Int?,
    @ColumnInfo(name = "student_name") var studentName: String?,
    @ColumnInfo(name = "student_obs") var studentObs: String?,
    @ColumnInfo(name = "date") var date: String?,
    @ColumnInfo(name = "time") var time: String?,
    @ColumnInfo(name = "_student_pos") var _student_pos: Int? // <~ my only alternative
) {
    constructor() : this(null, null, null, null, null, null)
}

我使用Room数据库,查看模型和实时数据。我正在打开编辑屏幕,并根据存储在底座中的值设置微调器的位置。但这不起作用。

单击列表中的一个项目时,一个额外的int会传递到下一个屏幕,指示它正在编辑。然后,执行以下代码。

if (mScheduleId != null && mScheduleId != -1) {
    val scheduleModelFactory = ScheduleViewModelFactory(applicationContext, null, mScheduleId!!)
    val scheduleViewModel = ViewModelProviders.of(this, scheduleModelFactory).get(ScheduleViewModel::class.java)

    scheduleViewModel.getSchedule().observe(this, Observer<Schedule> {
        mSpinnerStudentName?.setSelection(it!!._student_pos!!)
        mEdtStudentObs?.setText(it!!.studentObs)
        mEdtTime?.setText(it!!.time)
    })
}

注销后将正确显示位置,但不会设置Spinner。设置硬编码值也不会。发生了什么事?

0 个答案:

没有答案