【发布时间】:2019-07-13 13:07:42
【问题描述】:
我正在开发应用程序,在应用程序启动时,我从 Rest 服务下载类别和帖子,以便将它们存储在 SQLite 数据库中。我有几个问题:
- 如何确定哪个对象是类别和哪个帖子?或者我怎样才能访问它们?
objects变量很奇怪。 - 我应该把在数据库中插入项目的代码放在哪里 使用 Room 库?
- 我需要为每个帖子下载图片,我应该在哪里下载?
代码:
ItemsApi client = this.getClient(); // Retrofit2
List<Observable<?>> requests = new ArrayList<>();
requests.add(client.getCategories());
requests.add(client.getPosts());
Observable<Object> combined = Observable.zip(
requests,
new Function<Object[], Object>() {
@Override
public Object apply(Object[] objects) throws Exception {
Timber.d("Length %s", objects.length); // Length 2
Timber.d("objects.getClass() %s", objects.getClass()); // objects.getClass() class [Ljava.lang.Object;
return new Object();
}
});
Disposable disposable = combined.subscribe(
new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
Timber.d("Object %s", o.toString());
}
},
new Consumer<Throwable>() {
@Override
public void accept(Throwable e) throws Exception {
Timber.d("error: %s", e.toString());
}
}
);
private ItemsApi getClient() {
Retrofit.Builder builder = new Retrofit
.Builder()
.client(this.getOkHttpClient())
.addConverterFactory(GsonConverterFactory.create(this.getGson()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
.baseUrl(Config.WEBSERVICE_URL_PREFIX);
return builder.build().create(ItemsApi.class);
}
ItemsApi.class:
public interface ItemsApi {
@GET("categories")
Observable<List<CategoryEntity>> getCategories();
@GET("posts")
Observable<List<ArticleEntity>> getPosts();
}
【问题讨论】:
-
1.
objects variable is pretty strange因为您没有使用正确的 POJO 类进行响应(或将其强制转换为您想要的 POJO 类)。 2. 示例 JSON 响应在哪里? 3. 不用下载图片,直接使用图片加载库即可。 -
@Shashanth 我在帖子中添加了更多代码。 1.
apply方法中一定要使用POJO吗? 2.重要吗?服务返回对象。 3. 我需要下载它们
标签: java android retrofit2 rx-java2 android-room