Livedata в сочетании с Jetpack Compose - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь научиться составлять реактивный ранец и пытался сделать простое приложение, в котором вы можете добавлять рестораны вместе со счетом в обзорном списке, используя комнату.

Однако каждый раз, когда я пытаюсь ввести слово текстовое поле, текстовое поле не обновляется и остается пустым. Я ожидал, что обновление 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
        }

    }
...