Tôi đang sử dụng trang bị thêm để truy cập api mạng của mình để trả về mảng json. Tôi làm như vậy sử dụng sau số-Nhận đối tượng JSON từng cái một từ mảng JSON trong Android bằng Retrofit và RxJava
Observable<MyJson[]> response = (Observable<MyJson[]>)mNetworkService.getReadyObserverable(mNetworkService.getNetworkServiceApi().getMyDataJsons(), MyJson.class, true, useCache);
mAirlineSubscription = response.subscribe(new Observer<MyJson[]>() {
@Override
public void onCompleted() {
Log.d(TAG, "getData completed..");
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "onError: " + e.getLocalizedMessage());
}
@Override
public void onNext(MyJson[] myJsonData) {
//I want here json data one by one
}
Nhưng vấn đề của tôi là mảng dữ liệu json được tải về hoàn toàn và sau đó chỉ onNext
được gọi. Ở đây tôi muốn onNext
nên được gọi khi trang bị thêm tải xuống đối tượng json đầu tiên từ mảng json myData[]
và tiếp tục cho đến khi tất cả các đối tượng json của tôi được tải xuống myData[]
. Bằng cách này, giao diện người dùng của tôi sẽ trông nhạy hơn và tốt hơn về tương tác của người dùng.
Có ai có thể giúp khắc phục sự cố này không?
Retrofit không hỗ trợ điều này trong hộp - tùy chỉnh 'CallAdapter' và' Converter' là cần thiết. Cả hai đều được yêu cầu - trong CallAdapter, luồng của 'ResponseBody' phải được xử lý (nhận các mục mảng riêng lẻ) VÀ chuyển đổi thành các đối tượng java và Trình chuyển đổi chỉ cần chuyển các kết quả đó như là (noop). Đầu tiên, điều này mâu thuẫn với thiết kế của nó, nơi mà CallAdapter và Converter là các thực thể độc lập. Thứ hai, việc thực hiện sẽ không độc hại và dài dòng - phân tích cú pháp luồng json, rxjava backpressure vv - tôi đề nghị bạn tìm một giải pháp khác cho vấn đề - phân trang dữ liệu, phản hồi nhỏ hơn, –