我为此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
。设置硬编码值也不会。发生了什么事?