发布:2023/12/7 15:23:03作者:大数据 来源:大数据 浏览次数:511
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
AlertDialog.Builder builder = new AlertDialog.Builder(this); items = arrUserName; checkItems = new bool[items.Length]; checkItemsTemp = new bool[items.Length];//临时选项 //初始化 var itemsText = FindViewById<EditText>(Resource.Id.editTextUserIds).Text.Split(','); for (int i = 0; i < items.Length; i++) { for (int j = 0; j < itemsText.Length; j++) { if (string.Compare(items[i], itemsText[j], true) == 0) { checkItems[i] = true; break; } else { checkItems[i] = false; } } } builder.SetTitle("请选择领导"); builder.SetMultiChoiceItems(items, checkItems, (s1, e1) => { checkItems[e1.Which] = e1.IsChecked; }); builder.SetNegativeButton("反选", (s1, e1) => { for (int i = 0; i < checkItemsTemp.Length; i++) { checkItemsTemp[i] = !checkItems[i]; } AlertDialogConfirm(builder); }); builder.SetPositiveButton("确定", (s2, e2) => { // checkItems = checkItemsTemp;//将临时的选项转化真实选项 SetConfirmOperate(); }); builder.SetNeutralButton("全选", (s3, e3) => { for (int i = 0; i < checkItemsTemp.Length; i++) { checkItemsTemp[i] = true; } AlertDialogConfirm(builder); }); builder.Create().Show(); |
先上关键代码
android可以利用AlertDialog在对话框中实现多选,单选或消息对话,另外还可以加载自定义view比如listview去实现全选、反选,当然,本文没有采用此方法。而是完全利用AlertDialog自身实现的。
AlertDialog中实现大体思路是弹出两个对话框,第一个设置为3个按钮,全选,反选和确定,第二个对话框设置为确定和取消,然后将第一个对话框内容进行初始加载,第二个进行临时选择并加载。
之前考虑在checkbox中多添加两个选项,一个为全选,一个为反选,当选择全选时触发事件,但不幸的事,无法刷新AlertDialog中的选项状态,所以此法行不通,帮用上面的办法解决。当然,完美解决方案最好还是用自定义的实现办法,再加上listview强大功能。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4