【问题标题】:Uncheck AlertDialog check list box programmaticaly以编程方式取消选中 AlertDialog 选中列表框
【发布时间】:2013-05-18 12:30:57
【问题描述】:

我需要以编程方式取消选中复选框,但检查列表在对话框中。这会改变解决方案吗?到目前为止我所拥有的:

CharSequence[] items = itemList.toArray(new CharSequence[itemList.size()]);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select categories");

builder.setMultiChoiceItems(items, null,
new DialogInterface.OnMultiChoiceClickListener() {

public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  if (isChecked){
    if(chosenCat.size() < 10){
      chosenCat.add(items[which].toString());
    }else{
      Toast.makeText(getApplicationContext(), "Max 10 categories to compare.",   Toast.LENGTH_SHORT).show();
      //uncheck
      items.isChecked = false; // --> wrong
      chosenCat.remove(items[which].toString());
    }
  }else{
    chosenCat.remove(items[which].toString());
  }
}
});

【问题讨论】:

标签: android checkbox android-alertdialog


【解决方案1】:

我错过了这条线

((AlertDialog) dialog).getListView().setItemChecked(which, false);

之后

checkboxStatusArray[1] = false;

【讨论】:

    【解决方案2】:

    boolean[] 传递给builder.setMultiChoiceItems,这表示分别添加的复选框的复选框状态(选中/未选中)。试试这个示例代码

    boolean[] checkboxStatusArray = {true,false};
    
    CharSequence[] items = itemList.toArray(new CharSequence[itemList.size()]);
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("Select categories");
    
    builder.setMultiChoiceItems(items, checkboxStatusArray,
    new DialogInterface.OnMultiChoiceClickListener() {
    
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
    
    
                          checkboxStatusArray[1] = true;//This line will enable second check box
    
    
    
         }
     });
    
    builder.show();
    

    【讨论】:

    • 最终布尔值[] checkboxStatusArray = {true,false}; CharSequence[] items = {"one","two","three"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("选择类别"); builder.setMultiChoiceItems(items, checkboxStatusArray, new DialogInterface.OnMultiChoiceClickListener() { public void onClick(DialogInterface dialog, int which, boolean isChecked) { checkboxStatusArray[1] = true;//此行将启用第二个复选框 } }); builder.show();我无法让它工作。 :(
    • 您正在添加 3 个复选框项目,因此在 checkboxStatusArray 中添加 3 个布尔值
    • ya..因为checkboxStatusArray[1] = true;这一行而被检查你想要什么?您可以根据自己的需要进行修改。
    • 在“checkboxStatusArray[0] = false;”之后的调试器中行执行 checkboxStatusArray[0] 保持为真; -- 我需要刷新还是什么?
    • 此代码仅在您单击复选框(任意)时有效。假设您单击第一个复选框,如果未选中第二个复选框,则此代码将选中您的第二个复选框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2023-03-30
    • 2017-09-21
    • 2011-08-11
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多