我正在嘗試使用StackOverFlow API。我想要標籤列表與名稱,數量和說明。問題是,描述返回不同的API函數:如何使用RxJava更改對象列表
https://api.stackexchange.com/2.2/tags?page=1&pagesize=3&order=desc&sort=popular&site=stackoverflow
給了我只有兩個3個所需的字段:(通過單擊鏈接嘗試):
- 1)名稱
- 2)計算
https://api.stackexchange.com/2.2/tags/javascript%3Bjava%3Bc%23/wikis?site=stackoverflow 需要標記名稱和給我:
- 3)摘錄(介紹)
我建立了一個更新接口:
class Item {
@SerializedName("name")
public String name;
@SerializedName("count")
public String count;
@SerializedName("excerpt")
public String excerpt;
}
class Items {
@SerializedName("items")
public Item[] items;
}
@GET("/2.2/tags")
Observable<Items> getItems(@Query("page") String page,
@Query("pagesize") String pagesize,
@Query("order") String order,
@Query("sort") String sort,
@Query("site") String site);
@GET("/2.2/tags/{tagnames}/wikis")
Observable<Items> getDescription(@Path("tagnames") String tagnames,
@Query("site") String site);
因此,首先,我們應該執行getItems,然後讓所有的名稱和執行getDescription FUNC最後用新的領域把我們的物品弄混了。 所以我想收集所有3(名稱,計數和摘錄在一個可觀察的)。
這裏是我的觀察,到目前爲止:
App.getServerAPI()
.getItems("page", "pagesize", "order","sort", "site") //just example strings
.observeOn(AndroidSchedulers.mainThread());
我應該怎麼辦呢?我應該在兩個函數中使用Observable嗎?
UPDATE: 按照你的意見,我寫了一本至今:
public Observable<ServerAPI.Tags> call() {
return App.getServerAPI()
.getItems("page", "pagesize", "order", "sort", "site")
.map(new Func1<ServerAPI.Tags, ServerAPI.Tags>() {
@Override
public ServerAPI.Tags call(ServerAPI.Tags tags) {
String tagsStr = "";
for (ServerAPI.Tag tag: tags.items){
tagsStr +=tag.name+";";
}
ServerAPI.Excerts excerts = App.getServerAPI().
getExcerts(tagsStr, "site");
for (ServerAPI.Excert excertItem : excerts.items){
for (ServerAPI.Tag tagItem: tags.items){
if (excertItem.tag_name.equals(tagItem.name)){
tagItem.excerpt = excertItem.excerpt;
}
}
}
return tags;
}
})
.delay(1, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread());
}
看起來該死的醜陋!
你必須創建一個Observable,使a。2個可觀察到的郵編, 完成後,你有2個結果,並與2個結果創建的名稱,計數和摘錄 – xanexpt