首页 > 解决方案 > 从 java ArrayList 添加和删除复选框的选定项目

问题描述

我有一个函数可以根据 ArrayList 的值动态构建复选框,

现在我想在选中时将这些项目添加到另一个 ArrayList 并在取消选中时删除它们。

在选中项目时添加正在工作,但是当我取消选中该复选框时,它会返回到以前的活动。

公共无效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();
                    }


                }
            }

        });
    }




}

标签: javaandroidcheckbox

解决方案


我自己解决了。

将 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();
                        }
                    }

                }

            });

推荐阅读