使用rxAndroid将常规方法转换为函数式编程

时间:2016-11-22 12:40:44

标签: android functional-programming rx-android

我有2种数据类型(TvShows和MovieResponse),我想将它们合并为一种Movie类型,最后我将使用List来使用Recycler.ViewAdapter。如何将方法改为函数式编程?

谢谢)

 private List<Movie> buildResponse(SearchResponse.Events events) {
    List<Movie> result = new ArrayList<>();

    if (events.getMovies().size() > 0) {
      // add title
      result.add(new Movie(getString(R.string.section_movie), HEADER_TYPE));
      for (Movie movie : events.getMovies()) {
        result.add(movie);
      }
    }

    if (events.getTvshows().size() > 0) {
      result.add(new Movie(getString(R.string.section_tvshows), HEADER_TYPE));
      for (Movie tv : events.getTvshows()) {
        result.add(movie);
      }
    }
    return result;
  }

-TvShow和MovieResponse扩展了电影,这就是我可以迭代它们的原因。 - 我使用Java7

1 个答案:

答案 0 :(得分:0)

使用Observable.from()创建电影&#39; TvShows和MovieResponse的对象。然后使用Observable.zip(),这样你就可以获得tvShow和movie的对,在映射函数中使它们成为单个电影。 当您获得最终的Observable源时,请使用Observable.defer(() - &gt; source).toBlocking()来获取合并电影的列表。 你还需要添加第一个电影(标题),这样做才能使用 Observable.concat(Observable.just(header),source)