Проблема с динамическим флажком Android

#android

#Android

Вопрос:

Я пытаюсь добавить динамический флажок в свою активность. Однако, будучи новичком, я не могу разобраться с основами добавления флажков и их удаления. Вот мой код….

private void createCheckbox() {

  for(int i=0; i<5; i  ){
    cb  = new CheckBox(this);
    ll.addView(cb); 
    cb.setText("Test");
 }

 ll.addView(submit); 

  submit.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
        for(int i = 0; i < 5; i  ) { 
            ll.removeView(cb); 
        }  
        ll.removeView(submit);
        Questions();
 }});       
  

}
ll — это объект linerlayout. Идея заключается в том, что при запуске кода появляются 5 флажков, а затем, как только пользователь нажимает на кнопку отправки, они удаляются. В настоящее время флажки видны, но при нажатии кнопки отправки удаляется только один из пяти. Я не понимаю, что я делаю не так?

Идея заключается в том, что флажки будут создаваться в зависимости от значения в базе данных, и это значение может измениться, поэтому флажки не являются предопределенными, поскольку их может быть 4, 5 или 15. Я не знаю, как сделать так, чтобы у каждого флажка был свой собственный идентификатор, потому что после этой проблемы мне нужно будет идентифицировать их по отдельности, потому что мне нужно будет добавить к ним текст из базы данных, а затем, как только пользователь проверит несколько кнопок, мне нужно будет сохранить это в отдельной таблице. Очень запутался!!! помогите!

Ответ №1:

Вам нужно где-то сохранить ссылки на эти флажки, но не использовать одну и ту же переменную повторно.

 CheckBox[] cbs = new CheckBox[5];
for(int i=0; i<5; i  ){
    cbs[i]  = new CheckBox(this);
    ll.addView(cb); 
    cbs.setText("Test");
 }

 ll.addView(submit); 

  submit.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
        for(int i = 0; i < 5; i  ) { 
            ll.removeView(cbs[i]); 
        }  
        ll.removeView(submit);
        Questions();
 }});
  

Комментарии:

1. Отлично, вы спасаете жизнь! я потратил часы, пытаясь решить эту проблему