gpt4 book ai didi

android - 在 Android 的 Multichoice AlertDialog 中设置复选框状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:54:07 29 4
gpt4 key购买 nike

以下是我的AlertDialog.Builder

代码
    final String[] values = new String[] {"Select All", "Android", "ios", "windows", "Blackberry"};
final ArrayList<String> selecteditems = new ArrayList<String>();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select your favorite OS");
builder.setMultiChoiceItems(values, null , new DialogInterface.OnMultiChoiceClickListener() {

@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {

if (isChecked) {
selecteditems.add(String.valueOf(which));

} else {

selecteditems.remove(Integer.valueOf(which));
}
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();

}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();

}
});

AlertDialog dialog = builder.create();
dialog.show();

我想要做的是能够检测何时选中“全选”,我可以从 isChecked 循环中检测到。但我希望能够在用户选中“全选”时将所有选项设置为选中,并在用户取消选中“全选”时删除选中。

最佳答案

它应该类似于下面的代码。关键点是提供 checkedItemsboolean[] 数组,并在稍后尝试全选时更新它。

  • checkedItems 数组应该更新(因为 Dialog 仍然引用它。)
  • dialog.getListView().setItemChecked(i, true); 应该为每个项目调用。

    items.add(0, "Select All");

    boolean[] checkedItems = new boolean[items.size()];

    AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
    builder.setTitle(dialogTitle)
    .setMultiChoiceItems(items.toArray(new String[items.size()]), checkedItems, new DialogInterface.OnMultiChoiceClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {

    if(which == 0) {
    if(isChecked) {
    multichoiceDialog.getListView().setItemChecked(0, true);
    checkedItems[0] = true;
    for(int i=1; i< checkedItems.length; i++) {
    checkedItems[i] = true;
    multichoiceDialog.getListView().setItemChecked(i, true);
    }

    }
    }
    }
    })
    .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {

    }
    });

    multichoiceDialog = builder.create();
    multichoiceDialog.show();

关于android - 在 Android 的 Multichoice AlertDialog 中设置复选框状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038941/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com