使用rxjava2+改型的多处理或多线程不起作用

使用rxjava2+改型的多处理或多线程不起作用,java,android,retrofit2,rx-java2,Java,Android,Retrofit2,Rx Java2,这是我的代码:-[我得到的输出显示在下图中。][1] 主文件代码 但我希望输出像在一个屏幕上显示两个用户的github repos,左边显示vikashumainusername repos,右边显示naman14username repos。但我只在两边显示一个用户repos,像vikashumain 用户仅在两侧显示 基本URL= 这是我的服务文件:-ApiService.java public interface ApiServiceMain { //we used post here b

这是我的代码:-[我得到的输出显示在下图中。][1] 主文件代码

但我希望输出像在一个屏幕上显示两个用户的github repos,左边显示vikashumainusername repos,右边显示naman14username repos。但我只在两边显示一个用户repos,像vikashumain 用户仅在两侧显示

基本URL=

这是我的服务文件:-ApiService.java

public interface ApiServiceMain
{
//we used post here becz here we have parameters .Get and Post works in the same way but post has parameters and get doesn't have.
    @GET("users/vikashumain/starred")
    Observable<List<MainCategoryData>> maincategoryapi();

    @GET("users/naman14/starred")
    Observable<List<MainCategoryData>> maincategoryap();

    @GET("users/vikashumain/starred")
    Observable<List<MainCategoryData>> maincategorya();



}
ModelPOJO类:-

public class MainCategoryData {

    public  int id;
    public  String name;
    private String html_url;
    public  String description;
    public  String language;
    public  int stargazers_count;

    public MainCategoryData() {

    }

    public int getId() {
        return id;
    }
    List<Vikashumain> data2;
    public String getName() {
        return name;
    }

    public List<Vikashumain> getData2() {
        return data2;
    }

    public void setData2(List<Vikashumain> data2) {
        this.data2 = data2;
    }

    public void setId(int id) {
        this.id = id;

    }

    public void setName(String name) {
        this.name = name;
    }

    public void setHtmlUrl(String html_url) {
        this.html_url = html_url;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public void setStargazersCount(int stargazers_count) {
        this.stargazers_count = stargazers_count;
    }

    public String getHtmlUrl() {
        return html_url;
    }

    public String getDescription() {
        return description;
    }

    public String getLanguage() {
        return language;
    }

    public int getStargazersCount() {
        return stargazers_count;
    }
    public MainCategoryData(int id, String name, String html_url, String description, String language, int stargazers_count) {
        this.id = id;
        this.name = name;
        this.html_url = html_url;
        this.description = description;
        this.language = language;
        this.stargazers_count = stargazers_count;
    }
}
我正在解析的json文件:-
我正在解析的第二个json文件:-

不清楚您在这里试图实现什么。将两个用户的数据合并到一个列表中,并在两个视图上设置相同的列表

这会将两个面板更新为同一列表,因为handleRespons:

在此之后的某个时候,下面的调用将生成两个列表,每个用户一个,handleRespons将被调用两次。较慢用户的数据将再次覆盖两个面板的数据

Observable.just(retrofit.create(ApiServiceMain.class))
          .subscribeOn(Schedulers.computation())
          .flatMap(s -> {
              Observable<List<MainCategoryData>> couponsObservable
                        = s.maincategorya().subscribeOn(Schedulers.io());

              Observable<List<MainCategoryData>> storeInfoObservable
                        = s.maincategoryap().subscribeOn(Schedulers.io());

              return Observable.merge(couponsObservable,storeInfoObservable);
          })
          .observeOn(AndroidSchedulers.mainThread())
          .subscribe(this::handleRespons, this::handleError);
您可能应该为每个面板实现两个单独的响应处理程序:

private void handleResponseLeft(List<MainCategoryData> storeCoupons) {
    List<MainCategoryData> list = new ArrayList<>(storeCoupons);
    RepoAdapter adapter = new RepoAdapter(list);
    recyclerView.setAdapter(adapter);
}

private void handleResponseRight(List<MainCategoryData> storeCoupons) {
    List<MainCategoryData> list2 = new ArrayList<>(storeCoupons);
    RepoAdapter adapter2 = new RepoAdapter(list2);
    recyclerView2.setAdapter(adapter2);
}

ApiServiceMain s = retrofit.create(ApiServiceMain.class);

s.maincategorya()
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(this::handleResponseLeft, this::handleError);

s.maincategoryap()
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(this::handleResponseRight, this::handleError);
Observable.just(retrofit.create(ApiServiceMain.class))
          .subscribeOn(Schedulers.computation())
          .flatMap(s -> {
              Observable<List<MainCategoryData>> couponsObservable
                        = s.maincategorya().subscribeOn(Schedulers.io());

              Observable<List<MainCategoryData>> storeInfoObservable
                        = s.maincategoryap().subscribeOn(Schedulers.io());

              return Observable.merge(couponsObservable,storeInfoObservable);
          })
          .observeOn(AndroidSchedulers.mainThread())
          .subscribe(this::handleRespons, this::handleError);
private void handleResponseLeft(List<MainCategoryData> storeCoupons) {
    List<MainCategoryData> list = new ArrayList<>(storeCoupons);
    RepoAdapter adapter = new RepoAdapter(list);
    recyclerView.setAdapter(adapter);
}

private void handleResponseRight(List<MainCategoryData> storeCoupons) {
    List<MainCategoryData> list2 = new ArrayList<>(storeCoupons);
    RepoAdapter adapter2 = new RepoAdapter(list2);
    recyclerView2.setAdapter(adapter2);
}

ApiServiceMain s = retrofit.create(ApiServiceMain.class);

s.maincategorya()
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(this::handleResponseLeft, this::handleError);

s.maincategoryap()
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(this::handleResponseRight, this::handleError);