RxJava和改进的组合zip调用
呵呵,, 我正在考虑将RxJava和改型结合在一起,但我遇到了一个小问题 我只需要打一个网络电话就可以了。现在我尝试将调用与Observable.zip方法结合起来。我的代码中没有错误,但从未调用响应方法。你们有谁知道代码有什么问题吗 main活动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/";
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为什么不调用该方法?你能添加一些日志吗?运行你的示例很好。没有使用反拉姆达