java - 从 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();
}
}
}
});
}
}
解决方案
我自己解决了。
将 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();
}
}
}
});
推荐阅读
- firebase - (Flutter) 无法使用 Cloud Storage 下载图片
- django - Django 更好地加入
- javascript - 有没有更优雅的方式来编写这个 If/or 条件?
- angular - 在angular8中收到错误消息后如何将金额转换为货币管道值
- c# - 如何更改对象类列表中的对象?
- ffmpeg - 在 ffmpeg 字体文件中使用 Google 字体
- php - 什么是 PHP8 JIT 编译器
- swift - 在 SwiftUI 中旋转文本视图及其框架
- r - 采样一列数据框并在采样输出旁边挑选出值
- wordpress - htaccess 仅通过硬刷新重定向