如何在 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 只有两个字段,name
和 id
。谢谢。
你需要的是一个简单的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());
});
}
我有这个 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 只有两个字段,name
和 id
。谢谢。
你需要的是一个简单的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());
});
}