【问题标题】:Android LiveData transformationsAndroid LiveData 转换
【发布时间】:2018-05-01 20:12:17
【问题描述】:

我有一个简单的课程

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

我有一个改造获取请求

LiveData<ApiResponse<Contacts>> getContacts();

它返回LiveData&lt;ApiResponse&lt;Contacts&gt;&gt;,但我需要进一步使用它作为项目列表LiveData&lt;ApiResponse&lt;List&lt;Contact&gt;&gt;&gt;

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

  return contacts.items;
}

那么问题是如何将一个 livedata 转换为另一个 livedata ?

【问题讨论】:

  • 如果将LiveData&lt;Contacts&gt; 转换为LiveData&lt;List&lt;Contact&gt;&gt;,您可以使用Transformations.map()。不过,我不知道ApiResponse 是什么。
  • 也许这对你有帮助? stackoverflow.com/questions/46040027/…

标签: android retrofit2 rx-java2 android-livedata


【解决方案1】:

使用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
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多