android - 在 RecycleView 中加载图像
问题描述
从 recyclerview 中的 json 收集图像。当我们到达最后时如何加载下一页?我只是在学习使用retrofit2、rxjava2。我请您不要严格判断并建议我做错了什么。我将监听器挂在适配器内的 onBind 中:
@Override public void onBindViewHolder(@NonNull ImageViewHolder holder, final int position) {
Hit hit = hits.get(position);
Picasso.get().load(hit.getLargeImageURL())
.into(holder.imageViewPreview);
if (loadMoreListener != null && !isLoading && !noMore && position == getItemCount() - 1) {
isLoading = true;
loadMoreListener.loadMore();
}
我正在尝试通过将其编号传递给参数来实现加载下一页的激活:
adapter.setLoadMoreListener(new ImageAdapter.LoadMoreListener() {
@Override
public void loadMore() {
Toast.makeText(MainActivity.this, "Конец", Toast.LENGTH_SHORT).show();
page++;
viewModel.loadImages(searchQuery, page);
adapter.endLoading();
adapter.setNoMore(true);
adapter.notifyDataSetChanged();
}
});
发生启动错误 - RecyclerView 正在计算布局或滚动时无法调用此方法 androidx.recyclerview.widget.RecyclerView
LoadImages() 方法代码:
public void loadImages(String query, int page){
NetworkService networkService = NetworkService.getInstance();
compositeDisposable = new CompositeDisposable();
Disposable disposable = networkService.getJSONApi()
.getResponse(query, page)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Response>() {
@Override
public void accept(Response response) throws Exception {
deleteHits();
insertHits(response.getHits());
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Toast.makeText(getApplication(), throwable.getMessage(), Toast.LENGTH_SHORT).show();
}
});
compositeDisposable.add(disposable);
}
解决方案
尝试使用以下代码通知适配器:
recyclerview.post(new Runnable() {
@Override
public void run() {
myadapter.notifyDataSetChanged();
}
});
还要检查:https ://www.journaldev.com/24041/android-recyclerview-load-more-endless-scrolling
推荐阅读
- java - 为什么我的 Java 绘图代码占用这么多 CPU?
- node.js - Node.js 需要与 React.js 导入
- javascript - 如何从 Javascript 数组中提取图像并将它们放入 HTML?
- android - 与路由器通量的深度链接反应本机
- html - 如何忽略 Xpath 中的标签标签?
- list - Haskell 中优化的 Eratosthenes 筛
- python - 使用高级选项的 TwitterAPI 过滤器位置
- python - 不显示将 Jinja 与 Materialise 的可折叠元素一起使用
- spring-boot - 在 gradle 5 中查找 BOM 贡献的所有依赖项
- mysql - 存储游戏先决条件信息的 MYSQL 数据库模式