如何在 ViewModel 中将 LiveData<List<User>> 转换为 LiveData<List<String>>?

How to transform LiveData<List<User>> to LiveData<List<String>> in ViewModel?

我有这个 ViewModel class:

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 class 中,我有一个方法 getUserList() returns 一个 LiveData<List<User>> 对象。我如何将此对象转换为 LiveData<List<String>>,它基本上应该包含一个字符串列表(用户名)。我的 User class 只有两个字段,nameid。谢谢。

你需要的是一个简单的mapTransformation.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());
        });
    }