0

ユーザーに複数の選択を促すalertDialogがあり、いくつかの選択を行って、選択したアイテムをarrayListに保存できますが、そのalertBoxを再度起動すると、リセットされ、すべてのチェックボックスがオフになっています。状態を保持したいです。手動でリセットするまでそのままにしておきました。これはどのように作動しますか?私のコード:

ArrayList<String> participants = db.getNames();
            final String[] arr = participants.toArray(new String[participants
                    .size()]);
            boolean[] checkedItems = new boolean[participants.size()];
            final ArrayList<String> selectedParticipants = new ArrayList<String>();

            AlertDialog.Builder b = new AlertDialog.Builder(this);
            b.setTitle("Select the participants:");
            b.setMultiChoiceItems(arr, checkedItems,
                    new DialogInterface.OnMultiChoiceClickListener() {

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

                            if (isChecked) {

                                selectedParticipants.add(arr[which].toString());
                            }
                        }
                    });
            b.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(EnterExpense.this,
                            "" + selectedParticipants, Toast.LENGTH_SHORT)
                            .show();

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

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub

                        }
                    });
4

1 に答える 1

0

上記のコードは正しいだけですが、見逃したのは、 boolean [] checkedItems配列リスト内のチェック済みアイテムを更新することだけです。ユーザーがすべての参加者を選択すると、選択した参加者の位置が取得され、それらすべての位置に true がchekedItemsリストに追加され、残りの項目が false になると、完了したら間違いなく機能します!!.

getCheckedItemIds()またはを使用getCheckedItemPositions ()して、リストビューからチェックされたアイテムのリストを取得できます。AlertDialog.getListView()最初にダイアログのリストビューを取得するために使用する必要があります。

b.getListView().getCheckedItemPositions ();
于 2012-09-04T11:29:59.680 に答える