在RecycleView中加载图像

问题描述 投票:0回答:1

在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);

}

android android-recyclerview retrofit2 rx-java2
1个回答
0
投票

尝试用下面的代码通知适配器。

recyclerview.post(new Runnable() {
     @Override
     public void run() {
         myadapter.notifyDataSetChanged();
     }
});

也可以检查: https:/www.journaldev.com24041android-recyclerview-load-more-endless-scrolling

© www.soinside.com 2019 - 2024. All rights reserved.