Я пытаюсь getId в инструкции if, чтобы проверить, установлены или нет флажки, но я не знаю, как я могу определить cb
в заявлении if, чтобы заставить его работать ,Последняя локальная переменная cb, возможно, уже была назначена
Когда я объявляю cb
в качестве локальной переменной, как commeted я получаю две ошибки:
Конечное локальная переменная центибар уже может быть назначен
Не может вызывать IsChecked() на примитивном типа междунар
private void createCheckboxList(final ArrayList<Integer> items) {
final CheckBox cb;
final LinearLayout ll = (LinearLayout) findViewById(R.id.lila);
for (int i = 0; i < items.size(); i++) {
//here I am getting `The final local variable cb may already have been assigned`
cb = new CheckBox(this);
cb.setText(String.valueOf(items.get(i)));
cb.setId(i);
ll.addView(cb);
}
Button btn = new Button(this);
btn.setLayoutParams(new LinearLayout.LayoutParams(500, 150));
btn.setText("submit");
ll.addView(btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i : items) {
// here I am getting `Cannot invoke isChecked() on the primitive type int
`
if (cb.getId().isChecked()) {
}
}
}
});
}
Вам не нужно устанавливать значение в точке объявления. Но вы можете назначить его только один раз. – Thilo
Это правда - я добавил ясность, чтобы сделать это яснее. – Mikaveli
@Mikaveli: мне нужно использовать для Loop 'for (int i: items) {}' в методе onClick? – MrPencil