Добавить и удалить выбранные элементы флажка из Java ArrayList - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть функция, которая динамически создает флажки в соответствии со значениями ArrayList,

Теперь я хочу добавить эти элементы в другой ArrayList, когда установлен флажок, и удалить их при снятии флажка.

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

public void BuildCheckBox () {

    FinalSeatList.removeAll(FinalReservedSeatList);

    //Build checkboxus
    LinearLayout l1 = (LinearLayout)findViewById(R.id.linear_view);
    for(int i = 0; i < FinalSeatList.size(); i++) {
        final CheckBox cb = new CheckBox(this);
        cb.setText(FinalSeatList.get(i));
        l1.addView(cb);
        final int finalI = i;
        cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (buttonView.isChecked()) {
                    SelectedSeatList.add(FinalSeatList.get(finalI));
                    Toast.makeText(SelectSeatsActivity.this, "Added: " + SelectedSeatList.get(finalI), Toast.LENGTH_SHORT).show();
                }
                else
                {
                    if(SelectedSeatList.contains(FinalSeatList.get(finalI))){
                        SelectedSeatList.remove(FinalSeatList.get(finalI));
                        Toast.makeText(SelectSeatsActivity.this, "Removed: " + SelectedSeatList.get(finalI), Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(SelectSeatsActivity.this, "Unchecked", Toast.LENGTH_SHORT).show();
                    }


                }
            }

        });
    }




}

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Реализуйте этот слушатель в своей деятельности следующим образом -

public class ClassName extends Activity implements CompoundButton.OnCheckedChangeListener

, затем создайте динамический флажок -

LinearLayout checkboxLayout = (LinearLayout)findViewById(R.id.chkboxlyt);

  for(int i=0;i<dynamicCheckBoxes.length;i++){
   CheckBox cb = new CheckBox(this);
   cb.setText("whaterever text);
   checkboxLayout.addView(cb);
   cb.setOnCheckedChangeListener(this);

У вас будет этот метод, потому что вы уже внедрили слушателя в свою деятельность.

public void onCheckedChanged(CompoundButton cb, boolean isChecked){
  String checkedText = cb.getText()+"";

  if(isChecked){
   Toast.makeText(this, cb.getText()+" is checked!!!", Toast.LENGTH_SHORT).show();
  } else {
   // do remove operation here
  }
 }
0 голосов
/ 30 декабря 2018

Я решил это сам.

Объявление i как final было проблемой, я использовал метод getText для флажка, установленного для перехода к элементу массива, и это сработало.

cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (buttonView.isChecked()) {
                        SelectedSeatList.add((String) cb.getText());
                        Toast.makeText(SelectSeatsActivity.this, "Added: " + (String) cb.getText(), Toast.LENGTH_SHORT).show();
                    }else{
                        if(SelectedSeatList.contains((String) cb.getText())){
                            SelectedSeatList.remove((String) cb.getText());
                            Toast.makeText(SelectSeatsActivity.this, "Removed: " + (String) cb.getText(), Toast.LENGTH_SHORT).show();
                        }else{
                            Toast.makeText(SelectSeatsActivity.this, "Unchecked", Toast.LENGTH_SHORT).show();
                        }
                    }

                }

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