gpt4 book ai didi

java - 异步更新 ListView

转载 作者:行者123 更新时间:2023-12-02 11:48:27 26 4
gpt4 key购买 nike

我正在处理以下 api 调用 https://pokeapi.co/api/v2/pokemon/ ,问题是它看起来很慢,并且每个条目本身都有多个端点。是否可以在调用 api 时异步更新 ListView ?我觉得这可能类似于使用端点的下一个和上一个键并触发从 AsyncTask 的 doInBackground 更新 Listviewlistener 事件,或者onProgressUpdate 方法。我很感激任何帮助,我觉得我有了一个想法的开始,但我需要帮助来完成这个想法。

最佳答案

你绝对可以通过 AsyncTask 来实现它,但我宁愿建议使用 RxJava 的解决方案。

您可以实现RxJava链

分享如何使用 RxJava 进行链接调用的代码 fragment 。

 private void fetchHackerNewsStoriesChaining() {

StoriesApiInterface storiesApiInterface = HackerNewsApiClient.getStoriesApiInterface();
storiesApiInterface.getTopStories()
.flatMapIterable(new Function<JsonArray, Iterable<?>>() {
@Override
public Iterable<?> apply(JsonArray jsonArray) throws Exception {
Log.d("Count", ""+jsonArray.size());
return jsonArray;
}
})
.flatMap(new Function<Object, ObservableSource<SingleStoryModelResponse>>() {
@Override
public ObservableSource<SingleStoryModelResponse> apply(Object newsId) throws Exception {

return HackerNewsApiClient.getStoryDetailsApiInterface().getNewsStoryDetail(((JsonElement) newsId).getAsLong())
.subscribeOn(Schedulers.io());
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Observer<SingleStoryModelResponse>() {
@Override
public void onSubscribe(Disposable d) {
progressBar.setVisibility(View.VISIBLE);
}

@Override
public void onNext(SingleStoryModelResponse singleStoryModelResponse) {
adapterNewsList.addNewsItem(singleStoryModelResponse);
}

@Override
public void onError(Throwable e) {
Log.d("Hacker News", e.getMessage());
}

@Override
public void onComplete() {
progressBar.setVisibility(View.GONE);
}
});
}

关于java - 异步更新 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48047407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com