Как преобразовать список снимков документов в список объектов? - PullRequest
0 голосов
/ 19 марта 2020

Я хочу преобразовать снимки списка документов в список UserData.

updateUsers() в ViewModel должен вернуть список LiveData UserData.

Поэтому я использую это и репо для извлечения всех пользователей из коллекции в firestore:

class ListUsersLiveData(private val query: Query)
    : LiveData<List<DocumentSnapshot?>>(), EventListener<QuerySnapshot>{
      .....
      .....
      override fun onEvent(snapshot: QuerySnapshot?, e: FirebaseFirestoreException?) {
          val documents : List<DocumentSnapshot> = snapshot!!.documents
         postValue(documents)
   }
}

В ViewModel (у моего объекта UserData есть две строки: имя и телефон):

fun updateUsers(): LiveData<List<UserData>> {
    val liveData = repo.getAllUsers() // return list of Documents Snapshots

    return Transformations.map(liveData, { snap: List<DocumentSnapshot?> ->
    //how do i transform the live data in the right way?
    //this is something i was trying but it doesnt work
    UserData(snap.get("name").toString(),snap.get("phone").toString())
    })
}

Я не могу полностью понимаю, как это сделать, любая помощь приветствуется.

1 Ответ

0 голосов
/ 19 марта 2020

Я не знаю, если это лучший способ сделать это из-за вложенных карт, но я сделал это так и работает:

fun updateUsers(): LiveData<List<UserData>> {

    val liveData = repo.getAllUsers()
    return Transformations.map(liveData) { snap: List<DocumentSnapshot?> ->
            snap.map { user->
                UsuarioData(user!!.get("name").toString(),user.get("phone").toString())
            }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...