我做的是订单系统页面,将数据分为“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中实现数据刷新。
RecyclView中,如何在一ViewHolder里操作,在另一ViewHolder中更新数据
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-09 21:12关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Recyclerview的Adapter中,你可以使用
ViewHolder和ViewHolder.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(); //... } } }解决 无用评论 打赏 举报