Доступ к динамически созданным элементам на layout

Я создаю порядка сорока linearlayout через след код

                    _linerLayout_txt[i] = new LinearLayout(getActivity());
                    _linerLayout_txt[i].setOrientation(LinearLayout.HORIZONTAL);
                    _linerLayout_txt[i].setBaselineAligned(false);
                    LinearLayout.LayoutParams linLayoutParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                    linLayoutParam.setMargins(0,8,0,0);
                    linearLayout_main.addView(_linerLayout_txt[i], linLayoutParam);

                    LinearLayout.LayoutParams lpView;
                    _check_active_txt[i] = new CheckBox(themedContext);
                    lpView = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                    lpView.weight = 0;
                    _check_active_txt[i].setLayoutParams(lpView);
                    _linerLayout_txt[i].addView(_check_active_txt[i]);
                    _check_active_txt[i].setChecked(_Use_parameter[i]);
                    final int Ty = i;
                    _check_active_txt[i].setOnClickListener(v -> {
                        _Use_parameter[Ty] = _check_active_txt[Ty].isChecked();
                        _save(mActivity);
                    });
                    _set_size_checkbox(getActivity(), 18, _check_active_txt[i]);

                    _name_parameter_txt[i] = new TextView(getActivity());
                    _name_parameter_txt[i].setText(_Name_parameter_H4M[i]);
                    lpView = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                    lpView.weight = 1;
                    _name_parameter_txt[i].setLayoutParams(lpView);
                    _linerLayout_txt[i].addView(_name_parameter_txt[i]);

                    _value_parameter_txt[i] = new TextView(getActivity());
                    _value_parameter_txt[i].setText("значение");
                    lpView = new LinearLayout.LayoutParams(dp2px(100, mActivity), LinearLayout.LayoutParams.WRAP_CONTENT);
                    lpView.weight = 0;
                    _value_parameter_txt[i].setGravity(Gravity.CENTER);
                    _value_parameter_txt[i].setLayoutParams(lpView);
                    _linerLayout_txt[i].addView(_value_parameter_txt[i]);

                    _range_parameter_txt[i] = new TextView(getActivity());
                    _range_parameter_txt[i].setText(String.format("%s - %s (%s)", _Value_parameter_low_H4M[i], _Value_parameter_high_H4M[i], _Dimention_parameter_H4M[i]));
                    switch (i) {
                        case (13):
                        case (14):
                        case (15):
                            _range_parameter_txt[i].setText(_Dimention_parameter_H4M[i]);
                            break;
                    }
                    lpView = new LinearLayout.LayoutParams(dp2px(200, mActivity), LinearLayout.LayoutParams.WRAP_CONTENT);
                    lpView.weight = 0;
                    _range_parameter_txt[i].setGravity(Gravity.CENTER);
                    _range_parameter_txt[i].setLayoutParams(lpView);
                    _linerLayout_txt[i].addView(_range_parameter_txt[i]);

Работа интересует с _check_active_txt[i]. Нажатие на checkbox работает нормально. У меня возникает проблема, когда я пытаюсь обратиться к _check_active_txt[i] в обработке нажатия кнопки

    btn_select = view.findViewById(R.id.button_select);
    btn_select.setOnTouchListener((v, event) -> {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            btn_select.setBackgroundResource(R.drawable.back_red);
            for (int i = 0; i < _count_line; i++) { // iterate over all array items and assign them text.
                _check_active_txt[i].setChecked(true);
                _Use_parameter[i] = true;
            }
            if (getActivity() != null) {
                _save(getActivity());
            }
        } else  {
            btn_select.setBackgroundResource(R.drawable.back_blue);
        }
        return true;
    });

Массив, говорит, пустой у вас. Как мне получить доступ к CheckBox на созданных layout?


Ответы (1 шт):

Автор решения: Arty Morris

Надеюсь кому-нибудь поможет, решение такое:

            ArrayList<View> layoutCheckBox = linearLayout_main.getTouchables();
            for (View v1 : layoutCheckBox){
                if (v1 instanceof CheckBox) {
                    ((CheckBox)v1).setChecked(true);
                }
            }
→ Ссылка