1

在此处输入图像描述

我有一个父母名单,每个父母都有零个或多个孩子,我使用 recyclerview 向父母展示。我想将父母显示为每个 recyclerview 项目的标题,然后在下面显示所有孩子向孩子展示的最佳方式是什么?是否适合在列表视图中显示孩子或为每个孩子添加动态视图如果是这样怎么做?我附上了布局的图片,请检查我的意思谢谢

在此处输入图像描述

4

2 回答 2

0

问题陈述

  • 您想根据您共享的屏幕截图动态添加孩子。

解决方案

所以在这里我可以看到 2 个回收站视图,一个在另一个内部。第一个回收站视图适用于有 2 个项目的父母

  • 父母的名字
  • 儿童的另一个回收站视图

您需要做的是,您需要将更新后的项目列表传递给父级的 recyclerview 适配器,该适配器会将更新后的项目列表发送到子级 recyclerview 适配器,并且子级 recyclerview 适配器将使用 diffUtil 检查任何更改,它将反映recyclerview的变化。

于 2021-12-08T14:00:03.187 回答
0

我认为,这可能对 bcz 有帮助,在每个位置都有可观的动态生成项目视图。

                LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
                linearLayoutManager.setOrientation(RecyclerView.HORIZONTAL);
                IAFTbind.rcvFilters.setLayoutManager(linearLayoutManager);
                IAFTbind.rcvFilters.setAdapter(new RecyclerView.Adapter() {
                    public int checkedPosition = 0;


                    @NonNull
                    @Override
                    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                        ImageView imageView = new ImageView(getContext());
                        imageView.setScaleX(.9f);
                        imageView.setScaleY(.9f);
                        imageView.setLayoutParams(new ViewGroup.LayoutParams(size, size));
                        return new RecyclerView.ViewHolder(imageView) {
                            @Override
                            public String toString() {
                                return super.toString();
                            }
                        };
                    }

                    @Override
                    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
                        int p = holder.getAdapterPosition();

                        ((ImageView) holder.itemView).setBackground(new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(fBits.get(p), size, size, false)));

//                        ((ImageView) holder.itemView).setBackground(new BitmapDrawable(getResources(), bitmaps.get(position)));

                        int cp = this.checkedPosition;

                        if (cp == -1) {
                            ((ImageView) holder.itemView).setImageResource(0);
                        } else if (cp == p) {
                            ((ImageView) holder.itemView).setImageResource(R.drawable.draw_tool_selecter_strock);
                        } else {
                            ((ImageView) holder.itemView).setImageResource(0);
                        }


                        holder.itemView.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                ((ImageView) holder.itemView).setImageResource(R.drawable.draw_tool_selecter_strock);
                                checkedPosition = p;
                                notifyDataSetChanged();

                                changeBitmapEffect(p);
                            }
                        });
                    }

                    @Override
                    public int getItemCount() {
                        return fBits.size();
                    }

                });
于 2021-12-08T13:48:27.660 回答