Bro_Bear 2019-05-27 12:41 采纳率: 0%
浏览 218

RecyclView中,如何在一ViewHolder里操作,在另一ViewHolder中更新数据

我做的是订单系统页面,将数据分为“head”(交易双方信息)、“body”(商品信息,多Object)、“foot”(备注等信息与按钮)进行操作。其中“foot”中存在按钮的作用为:点击后对订单“body”中的商品内容进行修改。设想中,采用notifyItemChanged(int position, @Nullable Object payload)方法,但其position为FootViewHolder中的position,回调onBindViewHolder(@NonNull VH holder, int position,@NonNull List payloads)时会出错。因此陷入了僵局。
请问有什么好的方法可以实现,在FootViewHolder中进行点击,在BodyViewHolder中实现数据刷新。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-09 21:12
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Recyclerview的Adapter中,你可以使用ViewHolderViewHolder.itemView来操作你的ViewHolder,并且在ViewHolder.itemView上设置监听器,当用户点击时触发一个事件,然后在这个事件中处理你需要的操作。 例如:

    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
        //...
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
            return new ViewHolder(view);
        }
    
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            //...
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // 在这里添加你的逻辑,比如获取item的位置并更新item的数据
                    int pos = holder.getLayoutPosition();
                    //...
                }
            });
        }
    
        private class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
            //...
            @Override
            public void onClick(View v) {
                // 在这里添加你的逻辑,比如获取item的位置并更新item的数据
                int pos = getLayoutPosition();
                //...
            }
        }
    }
    
    评论

报告相同问题?