Как преобразовать LiveData в LiveData во ViewModel? - PullRequest
1 голос
/ 09 января 2020

У меня есть этот класс ViewModel:

public class MyViewModel extends ViewModel {
    private MyRepository myRepository;

    public MyRepository() {
        myRepository = new MyRepository();
    }

    LiveData<List<String>> getUsersLiveData() {
        LiveData<List<User>> usersLiveData = myRepository.getUserList();
        return Transformations.switchMap(usersLiveData, userList -> {
            return ??
        });
    }
}

В MyRepository классе а у меня есть метод getUserList(), который возвращает объект LiveData<List<User>>. Как я могу преобразовать этот объект в LiveData<List<String>>, который в основном должен содержать список строк (имен пользователей). В моем классе User есть только два поля: name и id. Спасибо.

1 Ответ

1 голос
/ 29 января 2020

Что вам нужно, это просто map. Transformation.switchMap предназначен для подключения к другому LiveData. Пример:

    LiveData<List<String>> getUsersLiveData() {
        LiveData<List<User>> usersLiveData = myRepository.getUserList();
        return Transformations.map(usersLiveData, userList -> {
            return userList.stream().map(user -> user.name).collect(Collectors.toList());
        });
    }
...