Jetpack создает нулевое значение для переменной в ViewModelAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Jetpack создает нулевое значение для переменной в ViewModel

Сообщение Anonymous »

Я устанавливаю значение переменной, используя LiveData в моей модели представления. Данные извлекаются из Firebase.
Ниже представлена ​​структура ViewModel
класса FarmViewModel(): ViewModel() {
var firestoreDB = InitializeFirestore()
private var _farms = MutableStateFlow(emptyList())
private var _farm = MutableLiveData()

var farms = _farms.asStateFlow()
var farm : LiveData = _farm

init{
getFarms()
}

fun getFarm(id:String){

firestoreDB.collection("farms")
.whereEqualTo("id",id)
.get()
.addOnSuccessListener {
if (it != null) {
//the farm name value is as expected
Log.d("farms", "DocumentSnapshot data: ${it.toObjects()[0].farm_name}")

_farm.value=it.toObjects()[0]
} else {
Log.d("farms", "No such document")
}
}
.addOnFailureListener{
Log.e("farms",it.message.toString())
setError(
ErrorData(
code=500,
service="CreateFarm",
message = it.message.toString()
)
)

}
}

Функция getFarm вызывается с использованием события Onclick, которое извлекает выбранный идентификатор, а также для перехода к экрану фермы.
В Composable значение фермы равно нулю
val farm = farmViewModel.farm.observeAsState()

Log.i("farm_", farm.value.toString())


Подробнее здесь: https://stackoverflow.com/questions/791 ... -viewmodel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»