繁体   English   中英

如何在 recyclerview 适配器中向 android 布局添加动态视图

[英]How to add dynamic views to android layout in recyclerview adapter

在此处输入图像描述

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

在此处输入图像描述

我认为,这可能对 bcz 有帮助,在每个 position 中都有相应的动态生成项目视图。

                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();
                    }

                });

问题陈述

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

解决方案

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM