卡在更新适配器

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

我一直坚持非常简单的事情 - 适配器更新。

我有带有 Adapter1 的片段,其中创建 N 个项目(垂直 RecyclerView)。每个项目都是 Adapter2,其中有 NN 个项目(水平 RecyclerView)。当滚动 Adapter2 时,我在 Fragment 的方法中为 Adapter2 加载更多项目。

假设这是 Adapter2 中的代码:

// loading more items for Adapter2
if(position == getItemCount() - 1){
    mFragment.loadMore(arg1, arg2, arg3);
}

这是来自 Fragment 的代码:

public void loadMoreModule(args){
    ExecutorService executor = Executors.newSingleThreadExecutor();
    Handler handler = new Handler(Looper.getMainLooper());
    executor.execute(() -> {
        // background work here
        downloadData(arg1, arg2, arg3);

        handler.post(() -> {
            // UI Thread work here
            Adapter1.notifyDataSetChanged();
            Adapter1.RecyclerViewForAdapter2Item.scrollTo(position);
        });
    });
}

scrollTo()
就像我理解在
notifyDataSetChanged()
notifyItemRangeChanged(start, size)
之前执行一样,所以当加载新数据时我遇到了问题 - 默认情况下
RecyclerViewForAdapter2Item
滚动到第一项。

适配器1示例代码:

    Adapter1 {
        private Adapter2 adapter2;

        onBindViewHolder(){
            adapter2 = new Adapter2(args);
        }
   }

加载的数据和

position
scrollTo()
具有正确的值。 由于使用后端 API 时出现一些问题,我必须更新整个 Adapter1 并尝试滚动。我无法仅更新 Adapter2 项目。 应该重做 API 工作,以便我可以更新 Adapter2 或者我现在可以以某种方式更新它?

android android-recyclerview adapter
© www.soinside.com 2019 - 2024. All rights reserved.