簡體   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