Android LiveData转换

时间:2018-05-01 20:12:18

标签: android retrofit2 rx-java2 android-livedata

我有一个简单的课程

public class Contacts {
    public ArrayList<Contact> items;
}

我有一个改装获取请求

LiveData<ApiResponse<Contacts>> getContacts();

返回LiveData<ApiResponse<Contacts>>,但我需要进一步将其用作项目列表LiveData<ApiResponse<List<Contact>>>

protected LiveData<ApiResponse<List<Contact>>> createCall() {
  LiveData<ApiResponse<Contacts>> contacts = apiService.getContacts();

  return contacts.items;
}

所以问题是如何将一个liveata转换成另一个liveata?

1 个答案:

答案 0 :(得分:0)

使用Transformations将一个LiveData转换为另一个。

LiveData<User> userLiveData = ...;
LiveData<String> userName = Transformations.map(userLiveData, user -> {
    user.name + " " + user.lastName
});

对于您的情况,请使用类似的

LiveData<List<Contact>> contactList = Transformations.map(contactsLiveData, it -> {
    it.contacts() // returns list
});