你如何迭代RxJava中的Observable中的列表?

Ed *_*rge -1 android rx-java rx-android

我目前正在学习RxJava/RxAndroid的基础知识,并尝试创建一个非常基本的Retrofit测试应用程序.

我在这个例子中使用RxJava 1.2.6.

但是,我一直没能找到如何在这是一个列表的对象执行功能的任何明显的例子可观察的对象.

例如,如果我有以下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;
    }
}
Run Code Online (Sandbox Code Playgroud)

以及

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

当Observable对象是包含列表的类时,如何映射函数(例如,在List中打印getName()每个函数 Agency).即Observable<AgencyResponse>

一个现实世界,希望更清楚的例子如下:

public class MainActivity extends BaseActivity {

 private TextView textView; // Code to populate this omitted

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // Create Retrofit service
  LaunchLibService service = ServiceFactory.createRetrofitService(LaunchLibService.class, LaunchLibService.SERVICE_ENDPOINT);

  //getAgencyList returns Observable<AgencyResponse>
  service.getAgencyList()
   .subscribeOn(Schedulers.newThread())
   .observeOn(AndroidSchedulers.mainThread())
   .map(AgencyResponse::getAgencies) // Gets the List<Agency> but how do I iterate over each object and print?
   .subscribe();
 }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒,谢谢.

Ed *_*rge 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"));
Run Code Online (Sandbox Code Playgroud)