Действие, в котором есть утилистайзер, в котором я передаю список, в то время как в держателе привязки адаптера радиогруппа и радиокнопка создаются для размера списка, а затем мне нужно вычислить значение при выборе пользователя и передать его в функцию действия с помощьюконтекст, но теперь проблема заключается в том, что пользователь может изменить опцию, но вызов функции, когда пользователь выбирает каждую опцию, так что значение добавляет усиление и снова. Радиогруппа является динамической.
В адаптере
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();
}
, каждое значение имеет свою цену, поэтому мне нужнорассчитайте эту цену и вернитесь к активности.