如何在不调用notifiyItemChanged或DiffUtil的情况下更新/刷新RecyclerView的特定项目?

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

我有一个嵌套的RecyclerViews,此recyclerView的每一行/每个项目也是一个recyclerView,并且有一个外部事件将更新内部recyclerView中的一个项目。我的外部RecyclerView适配器的onBindViewHolder看起来像这样

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
            GiftWrappingHorizontalViewHolder viewHolder = (GiftWrappingHorizontalViewHolder) holder;
            viewHolder.giftWrappingRecyclerView.setLayoutManager(new LinearLayoutManager(viewHolder.giftWrappingRecyclerView.getContext(),
                    RecyclerView.HORIZONTAL, false));
            viewHolder.topTextView.setText(dataList.get(position).getTopTextName());
            if(dataList.get(position).getType() == 1) {
                GiftWrappingHorizontalAdapter adapter = new GiftWrappingHorizontalAdapter(dataList.get(position)
                        .getItems(), position);
                viewHolder.giftWrappingRecyclerView.setAdapter(adapter);
                viewHolder.giftWrappingRecyclerView.setItemAnimator(null);
                adapter.setGiftWrappingHorizontalClickListener(giftWrappingHorizontalClickListener);
            } else if(dataList.get(position).getType() == 0){
                GiftWrappingAddOnsAdapter adapter = new GiftWrappingAddOnsAdapter(dataList.get(position)
                        .getItems(), position);
                viewHolder.giftWrappingRecyclerView.setAdapter(adapter);
                viewHolder.giftWrappingRecyclerView.setItemAnimator(null);
                adapter.setGiftWrappingAddOnEventsListener(giftWrappingAddOnEventsListener);
            }

    }

所以您可以看到,我将内部recyclerViews绑定到onBindViewHolder内部的适配器上并且我想更新内部recyclerView的特定项目而不调用notifiyItemChanged,因为这将重新创建已分页的内部适配器,并且仅在内部RecyclerViews使用HORIZONTAL LinearLayoutManager的情况下才调用第一页。

通过按位置访问recyclerView的某个项目并调用notifiyItemChanged到内部RecyclerView来实现这一点吗?>>

我有一个嵌套的RecyclerViews,此recyclerView的每一行/每个项目也是一个recyclerView,并且有一个外部事件将更新内部recyclerView中的一个项目。我的外部onBindViewHolder ...

java android android-recyclerview recycler-adapter
1个回答
0
投票

您可以尝试使用notifyItemChanged()

notifyItemChanged()
© www.soinside.com 2019 - 2024. All rights reserved.