Я пытаюсь научиться составлять реактивный ранец и пытался сделать простое приложение, в котором вы можете добавлять рестораны вместе со счетом в обзорном списке, используя комнату.
Однако каждый раз, когда я пытаюсь ввести слово текстовое поле, текстовое поле не обновляется и остается пустым. Я ожидал, что обновление locationName в функции onValueChange вызовет обновление состояния, поскольку оно является частью класса LiveData. Как я могу решить эту проблему без необходимости создавать отдельную модель пользовательского интерфейса в моем modelView и преобразовывать ее в мой объект сущности в случае, если данные необходимо сохранить?
Моя функция создания
@Composable
fun AddItemScreenBody(modifier: Modifier = Modifier.Companion) {
VerticalScroller {
Column(modifier) {
var locations = addItemViewNodel.location.observeAsState()
FilledTextField(
value = locations.value!!.locationName,
onValueChange = { data -> locations.value!!.locationName = data },
label = { Text(stringResource(R.string.name), style = TextStyle(color = Color(0xFFC7C7C7))) })
}
}
}
Моя модель просмотра
class AddItemViewModel () : ViewModel() {
var location : LiveData<LocationEntity> = MutableLiveData(LocationEntity())
}
Моя модель данных
@Entity(tableName = "locations")
class LocationEntity @Ignore constructor () {
@PrimaryKey(autoGenerate = true)
var id: Long = 0
@ColumnInfo(name = "location_name")
var locationName: String = ""
constructor (id: Long, locationName: String, category: Category) : this()
{
this.id = id
this.locationName = locationName
}
}