Получите доступ к childs (Chip) из recyclerview, которые создаются программно - PullRequest
0 голосов
/ 10 марта 2019

В MainActivity я создал Array of Array of Chip и накачал его до Recyclerview. Внутри RecyclerAdapter мне пришлось удалить родительский элемент чипов, чтобы иметь возможность поместить каждый массив в ChipGroup. Теперь мне нужно получить все ChipGroups (и их чипы) в MainActivity. Я попытался ChipGroup cg = (ChipGroup) findElementByID(R.id.chip_row_chipgroup), но только получает первую группу ChipGroup (видимо, потому что я удалил родительский из остальных)

RecyclerAdapter.java

public class ChipSelectAdapter extends RecyclerView.Adapter<ChipSelectAdapter.ViewHolder> {
        private ArrayList<ArrayList<Chip>> items;
        private Context context;

        public ChipSelectAdapter(Context context, ArrayList<ArrayList<Chip>> chips) {
            this.context = context;
            this.items = chips;
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.chip_row, viewGroup, false);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(ViewHolder viewHolder, final int position) {

            viewHolder.setIsRecyclable(false);

            for (Chip chip : items.get(position))
            {
                if(chip.getParent() != null)
                {
                    ((ViewGroup)chip.getParent()).removeView(chip);
                }

                viewHolder.chipGroup.addView(chip);
            }


            // listener
            viewHolder.itemView.setOnClickListener (new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Do something!

                }
            });

        }

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

        public class ViewHolder extends RecyclerView.ViewHolder {

            public ChipGroup chipGroup;

            public ViewHolder(View view) {
                super(view);

                chipGroup = (ChipGroup) view.findViewById(R.id.chip_row_chipgroup);

            }
        }
    }
...