Получить общее значение активности из адаптера, в котором создана динамическая радиогруппа, по размеру списка и переключателю «Далее»? - PullRequest
0 голосов
/ 23 октября 2019

Действие, в котором есть утилистайзер, в котором я передаю список, в то время как в держателе привязки адаптера радиогруппа и радиокнопка создаются для размера списка, а затем мне нужно вычислить значение при выборе пользователя и передать его в функцию действия с помощьюконтекст, но теперь проблема заключается в том, что пользователь может изменить опцию, но вызов функции, когда пользователь выбирает каждую опцию, так что значение добавляет усиление и снова. Радиогруппа является динамической.

В адаптере

for (int i = 0; i < value_list.size(); i++) {
                    rdbtn = new RadioButton(context);
                    rdbtn.setTextColor(context.getResources().getColor(R.color.TextColor));
                    rdbtn.setHighlightColor(context.getResources().getColor(R.color.TextColor));
                    //rdbtn.setId(View.generateViewId());
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                        rdbtn.setButtonTintList(ColorStateList.valueOf(context.getResources().getColor(R.color.TextColor)));
                    }
                    rdbtn.setText(value_list.get(i).getLabel()+" + "+value_list.get(i).getPrice().getFormatted());
                    holder.radiogroup.addView(rdbtn);
                }
holder.radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
            {
                public void onCheckedChanged(RadioGroup group, int checkedId)
                {
                    // This will get the radiobutton that has changed in its check state
                    RadioButton checkedRadioButton = (RadioButton)group.findViewById(checkedId);
                    // This puts the value (true/false) into the variable
                    boolean isChecked = checkedRadioButton.isChecked();
                    // If the radiobutton that has changed in check state is now checked...
                    if (isChecked) {
                        String str = checkedRadioButton.getText().toString();
                        str = str.substring(str.indexOf("+")+3, str.length());
                        txtTotal.setText(str);
                        Toast.makeText(context, "Checked:" + str, Toast.LENGTH_SHORT).show();
                        if (context instanceof ProductDetail) {
                            ((ProductDetail)context).addTotal(Double.parseDouble(str));
                        }
                    }
                }
            });

В Activity, функция с именем

Double totalPrice = 0.0;
    public void addTotal(Double total) {
        totalPrice += total;
        Toast.makeText(this, "Total "+totalPrice, Toast.LENGTH_SHORT).show();
    }

, каждое значение имеет свою цену, поэтому мне нужнорассчитайте эту цену и вернитесь к активности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...