Я бы хотел наблюдать свойство currentUser: LiveData<User>
(выставленное UserRepository
) в ProfileViewModel
для обновления свойства user: User
. Это свойство связано с пользовательским интерфейсом через привязку данных и должно обновлять пользовательский интерфейс в случае изменения. Это мое предположение.
Я попытался установить свойство user
с помощью Преобразований, но оно не сработало.
Какой-то код?
DatabaseService.kt
fun getById(documentId: String): MutableLiveData<T> {
val resultObj = MutableLiveData<T>()
db.collection(className)
.document(documentId)
.get()
.addOnCompleteListener { task ->
if (task.isSuccessful) {
val obj = task.result?.toObject(modelClass)
resultObj.value = obj
} else {
Log.d(TAG, task.exception?.localizedMessage)
}
}
return resultObj;
}
UserRepository.kt
fun getCurrentUser(): LiveData<User> {
return this.getById(FirebaseAuthService.userUid)
}
ProfileViewModel.kt
// This doesn't work.
val userRep = UserRepository();
var user: User = User()
init {
Transformations.map(userRep.getCurrentUser()) { firebaseUser ->
user = firebaseUser;
}
}
Свойство user: User
привязано к пользовательскому интерфейсу. Как я могу обновить это свойство со значением объекта aliveata. Я не хочу наблюдать userRep.getCurrentUser()
во фрагменте и хранить ссылку на компонент пользовательского интерфейса и обновлять в случае изменения.