Я создаю приложение Android, в котором я использую две или более группы флажков.
Я динамически создаю флажок и OnCheckedChangeListener, мне нужно сгруппировать флажки по группам, чтобы ограничить количество флажков, которые должны быть выбраны.
У меня есть продукты моего класса, и у каждого продукта есть дополнительные, для некоторых продуктов есть 1 или более дополнительных.Из которых каждый дополнительный я могу выбрать 1 или более ингредиентов.
Проблема в том, что Слушатель работает для любого флажка, я не могу назначить слушателя для каждой группы флажков.
Producto
Флажки накапливаются
Как я могу реализовать несколько слушателей для каждой группы флажков?
Я уже пытался вставить вдля создания нового OnCheckedChangeListener, но все работает как одна группа флажков, а не как новая.
for(int j = 0; j < extras.size(); j++){
extra = extras.get(j);
//Si los extras son checkboxs
final LinearLayout layoutCheckBoxs = new LinearLayout(this);
ViewGroup.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
((LinearLayout.LayoutParams) lp).setMargins(16,16,16,16);
layoutCheckBoxs.setOrientation(LinearLayout.VERTICAL);
layoutCheckBoxs.setId(j+1);
layoutCheckBoxs.setTag(j);
final CheckBox[] checkBoxes = new CheckBox[extra.getListIngredients().size()];
CheckBox.OnCheckedChangeListener checker = new CheckBox.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton cb, boolean b) {
if (count == extra.getMaxSelect() && b) {
cb.setChecked(false);
Toast.makeText(getApplicationContext(),
String.format("Solo puedes seleccionar %s %s",extra.getMaxSelect(),extra.getMaxSelect()==1?"extra":"extras"), Toast.LENGTH_SHORT).show();
} else if (b) {
count++;
Log.e("Count",String.valueOf(count));
extrasCompleted[Integer.valueOf(layoutCheckBoxs.getTag().toString())] = count;
enabledButtonAddCart(extras);
} else if (!b) {
count--;
Log.e("Count",String.valueOf(count));
extrasCompleted[Integer.valueOf(layoutCheckBoxs.getTag().toString())] = count;
enabledButtonAddCart(extras);
}
}
};
for(i = 0; i < extra.getListIngredients().size(); i++){
checkBoxes[i] = new CheckBox(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
checkBoxes[i].setTextAppearance(R.style.customCheckBoxStyle);
}else{
checkBoxes[i].setTextAppearance(this,R.style.customCheckBoxStyle);
}
/* checkBoxes[i].setTypeface(type);*/
String rightText = "+ "+fmt.format(extra.getListIngredients().get(i).getPrice());
String leftText = extra.getListIngredients().get(i).getName();
CharSequence text = null;
if(extra.getListIngredients().get(i).getPrice()!=0) {
text = new Truss()
.append(leftText)
.pushSpan(new LineOverlapSpan())
.append("\n")
.popSpan()
.pushSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_OPPOSITE))
.pushSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorPriceExtras)))
.append(rightText)
.build();
}else{
text = new Truss()
.append(leftText)
.pushSpan(new LineOverlapSpan())
.append("\n")
.popSpan()
.build();
}
checkBoxes[i].setText(text);
checkBoxes[i].setId(i);
checkBoxes[i].setPadding(16,16,16,16);
//setMargins(checkBoxes[i],15,5,15,5);
setMargins(checkBoxes[i],15,15,15,15);
checkBoxes[i].setOnCheckedChangeListener(checker);
}