Android弹出多项选择对话框,Android:具有多项选择的警报对话框

您的OnMultiChoiceClickListener就在附近.它只有两个问题:首先,您的for循环不会遍历除单击的孩子以外的所有孩子.

// A loop to disable all items other than clicked one

for (int position = alertDialogList.getCheckedItemPosition(); position<

alertDialogList.getChildCount; position++)

{

alertDialogList.getChildAt(position).setEnabled(false);

}

您从单击的那一个开始,然后禁用该那一个,然后禁用它之后的所有子项,直到列表的末尾.只有严格在被单击的孩子之前的孩子不会被禁用.第二个问题是您的禁用代码将针对单击的任何项目运行,而不仅仅是“无”项目.尝试这样的事情.我正在使用它来识别是否已按下特殊的“无”项目.

private static final int specialItem = ...;

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

if (which == singleItem) { // only if they clicked 'none'

final AlertDialog alertDialog = (AlertDialog) dialog;

final ListView alertDialogList = alertDialog.getListView();

for (int position = 0; position < alertDialogList.getChildCount(); position++)

{

if (position != which) {

alertDialogList.getChildAt(position).setEnabled(!isChecked);

}

}

}

}

请注意,如果不为0,我什么也不做.我的for循环从1开始,以避免项0,如果未选中并禁用了’none’项,它将设置每个要启用的元素如果没有项目被选中.

最后,我只注意到这不是多选对话框的常见行为.用户会对“无”选项的行为感到惊讶,因为它与其他所有选项都不相同.没有“ none”选项将更为常见:如果用户不选择任何其他选项,则意味着没有任何选择.如果您确实需要使用“无”选项,以告诉用户明确选择“无”与不回答之间的区别,请考虑使用自定义布局,并在复选框组之外使用单独的“无”按钮或单选按钮,因此用户可以说它的行为会有所不同.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值