我目前正在学习RxJava / RxAndroid的基础知识,并尝试创建一个非常基本的Retrofit测试应用程序。
我在这个例子中使用RxJava 1.2.6。
但是,我还没有找到任何关于如何在Observable对象中 列表的对象上执行函数的明确示例。
E.g。如果我有以下POJO
public class AgencyResponse {
private List<Agency> agencies;
private int total;
private int count;
private int offset;
public List<Agency> getAgencies() {
return agencies;
}
public int getTotal() {
return total;
}
public int getCount() {
return count;
}
public int getOffset() {
return offset;
}
}
以及
public class Agency {
private int id;
private String name;
private String abbrev;
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getAbbrev() {
return abbrev;
}
}
当Observable对象是包含列表的类时,如何映射函数(例如,在List中打印每个getName()
的{{1}})。即Agency
现实世界,希望更清楚的例子如下:
Observable<AgencyResponse>
任何帮助都会很棒,谢谢。
答案 0 :(得分:7)
使用以下方法解决了这个问题 - 我错过了一个可以访问flatMapIterable
对象的Agency
。
LaunchLibService service = ServiceFactory.createRetrofitService(LaunchLibService.class, LaunchLibService.SERVICE_ENDPOINT);
service.getAgencyList()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(AgencyResponse::getAgencies) // Gets the List<Agency> but how do I iterate over each object
.flatMapIterable(agencyResponse -> agencyResponse)
.map(Agency::getName)
.subscribe(s -> textView.append(s + "\n"));