RxJava和改进的组合zip调用

RxJava和改进的组合zip调用,java,android,retrofit,rx-java,rx-android,Java,Android,Retrofit,Rx Java,Rx Android,呵呵,, 我正在考虑将RxJava和改型结合在一起,但我遇到了一个小问题 我只需要打一个网络电话就可以了。现在我尝试将调用与Observable.zip方法结合起来。我的代码中没有错误,但从未调用响应方法。你们有谁知道代码有什么问题吗 main活动 public class MainActivity extends AppCompatActivity { public static final String BASE_URL = "https://api.learn2crack.com/";

呵呵,, 我正在考虑将RxJava和改型结合在一起,但我遇到了一个小问题

我只需要打一个网络电话就可以了。现在我尝试将调用与Observable.zip方法结合起来。我的代码中没有错误,但从未调用响应方法。你们有谁知道代码有什么问题吗

main活动

public class MainActivity extends AppCompatActivity {

public static final String BASE_URL = "https://api.learn2crack.com/";

private RecyclerView mRecyclerView;

private CompositeDisposable mCompositeDisposable;

private DataAdapter mAdapter;

private ArrayList<Android> mAndroidArrayList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mCompositeDisposable = new CompositeDisposable();
    initRecyclerView();
    loadJSON();
}

private void initRecyclerView() {
    mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
    mRecyclerView.setHasFixedSize(true);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
    mRecyclerView.setLayoutManager(layoutManager);
}

private void loadJSON() {

    RequestInterface requestInterface = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build().create(RequestInterface.class);

     //        //Single request
     //        mCompositeDisposable.add(requestInterface.register()
     //                .observeOn(AndroidSchedulers.mainThread())
     //                .subscribeOn(Schedulers.io())
     //                .subscribe(this::handleResponse, this::handleError));

    //double request
    Observable<List<Android>> listObservable = requestInterface.register()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());
    Observable<List<Android>> listObservable2 = requestInterface.register()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());

    Observable.zip(listObservable, listObservable2, CombinedAndroid::new)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(this::handleResponse2,this::handleError);

}

private void handleResponse(List<Android> androidList) {
    mAndroidArrayList = new ArrayList<>(androidList);
    mAdapter = new DataAdapter(mAndroidArrayList);
    mRecyclerView.setAdapter(mAdapter);
}

private void handleResponse2(CombinedAndroid combinedAndroid) {
    mAndroidArrayList = new ArrayList<>(combinedAndroid.getAndroid());
    mAdapter = new DataAdapter(mAndroidArrayList);
    mRecyclerView.setAdapter(mAdapter);
}

private void handleError(Throwable error) {
    Toast.makeText(this, "Error " + error.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onDestroy() {
    super.onDestroy();
    mCompositeDisposable.clear();
}
}
组合android模型

public class Android {

private String ver;
private String name;
private String api;

public String getVer() {
    return ver;
}

public void setVer(String ver) {
    this.ver = ver;
}

public String getName() {
    return name;
}

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

public String getApi() {
    return api;
}

public void setApi(String api) {
    this.api = api;
}
}
public class CombinedAndroid {
private List<Android> android;
private List<Android> android2;

public CombinedAndroid(List<Android> android, List<Android> android2) {
    this.android = android;
    this.android2 = android2;
}

public List<Android> getAndroid() {
    return android;
}

public void setAndroid(List<Android> android) {
    this.android = android;
}

public List<Android> getAndroid2() {
    return android2;
}

public void setAndroid2(List<Android> android2) {
    this.android2 = android2;
}
}
公共类组合android{
私有列表;
私有列表android2;
公共组合android(列出android,列出android2){
this.android=android;
this.android2=android2;
}
公共列表getAndroid(){
返回android;
}
public void setAndroid(列出android){
this.android=android;
}
公共列表getAndroid2(){
返回android2;
}
公共无效setAndroid2(列表android2){
this.android2=android2;
}
}
请求接口

public interface RequestInterface {

@GET("android/jsonarray/")
Observable<List<Android>> register();
}
公共接口请求接口{
@获取(“android/jsonarray/”)
可观察寄存器();
}
适配器

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder>{

private ArrayList<Android> mAndroidList;

public DataAdapter(ArrayList<Android> androidList){
    mAndroidList = androidList;
}

class ViewHolder extends RecyclerView.ViewHolder{

    private TextView mName, mVersion, mApi;

    ViewHolder(View itemView) {
        super(itemView);
        mName = (TextView) itemView.findViewById(R.id.tv_name);
        mVersion = (TextView) itemView.findViewById(R.id.tv_version);
        mApi = (TextView) itemView.findViewById(R.id.tv_api_level);
    }
}

@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_row, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(DataAdapter.ViewHolder holder, int position) {
    holder.mName.setText(mAndroidList.get(position).getName());
    holder.mVersion.setText(mAndroidList.get(position).getVer());
    holder.mApi.setText(mAndroidList.get(position).getApi());
}

@Override
public int getItemCount() {
    return mAndroidList != null ? mAndroidList.size() : 0;
}
}
公共类DataAdapter扩展了RecyclerView.Adapter{
私人庭审法官;
公共数据适配器(ArrayList androidList){
mAndroidList=男性主义者;
}
类ViewHolder扩展了RecyclerView.ViewHolder{
私有文本视图mName、mVersion、mApi;
ViewHolder(视图项视图){
超级(项目视图);
mName=(TextView)itemView.findViewById(R.id.tv\u名称);
mVersion=(TextView)itemView.findViewById(R.id.tv_版本);
mApi=(TextView)itemView.findViewById(R.id.tv\u api\u级别);
}
}
@凌驾
public DataAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=LayoutFlater.from(parent.getContext()).flate(R.layout.recycler_行,parent,false);
返回新的ViewHolder(视图);
}
@凌驾
public void onBindViewHolder(DataAdapter.ViewHolder,int位置){
holder.mName.setText(mAndroidList.get(position.getName());
holder.mVersion.setText(mAndroidList.get(position.getVer());
holder.mApi.setText(mAndroidList.get(position.getApi());
}
@凌驾
public int getItemCount(){
return mAndroidList!=null?mAndroidList.size():0;
}
}

为什么说方法未调用?你能添加一些日志吗?运行你的示例很好。不使用retrolamda为什么不调用该方法?你能添加一些日志吗?运行你的示例很好。没有使用反拉姆达