-5

4つのチェックボックスしか選択できない要素のリストを使用してダイアログを実装する方法を知りたいです。どうやってやるの?チュートリアルはありますか?私はそのようなものを持っています:

protected void showSelectMeasurementsDialog() {
      boolean[] checkedMeasurements = new boolean[measurements.length];
      int count = measurements.length;

      for(int i = 0; i < count; i++)

              checkedMeasurements[i] = selectedMeasurements.contains(measurements[i]);

      DialogInterface.OnMultiChoiceClickListener measurementsDialogListener = new DialogInterface.OnMultiChoiceClickListener() {
       @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecselectedMeasurementsChecked){
           if(isChecselectedMeasurementsChecked)

                   selectedMeasurements.add(measurements[which]);



          else{
            selectedMeasurements.remove(measurements[which]);

          }

          onChangeSelectedMeasurements();
        }
       };

      AlertDialog.Builder builder = new AlertDialog.Builder(this);
      builder.setTitle("Select Measurements");
      builder.setMultiChoiceItems(measurements, checkedMeasurements, measurementsDialogListener);

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

しかし、4つ選択したときにアイテムの選択をブロックするにはどうすればよいですか?

4

2 に答える 2

1
  1. ここに示すように、チェック可能なリストビューを実装し ます。
  2. Collectionアダプタでチェックされたアイテムを保持します(setOnCheckedChangeListenerリストアイテムに含まれるチェックボックスを実装し、アイテムがチェックされるたびにこのコレクションに追加します)。
  3. 最後に、このコレクションのサイズを使用して、チェックボックスのクリックを許可するかどうかを決定します。
于 2013-03-27T04:00:03.303 に答える
1

このようにしてみてください。

public void dialog(View v){
String str[] = {"yyyy","xxxx","ccccc","cxcxxc","dadfssaas"};
    final AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
    LayoutInflater inflater = getLayoutInflater();

    View view = inflater.inflate(R.layout.dialog, null);
    ListView lv = (ListView)view.findViewById(R.id.listView1);
    ArrayAdapter<String> adp = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_multiple_choice,str);
    lv.setAdapter(adp);
    final boolean[] checkedItems = new boolean[str.length];
    alertDialog.setMultiChoiceItems(str, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {

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

            int count = 0;
            for (int i = 0; i < checkedItems.length; i++) {
                // loop through the checkedItems array, if checkedItems
                // increment count*/

                if (checkedItems[i]) {

                    count++;

                }
                if (count == 5) {
                    // if the number of checked items become
                    // four, set the last checkedItems item 'which'
                    // to false and uncheck the checkbox
                    checkedItems[which] = false;
                    ((AlertDialog) dialog).getListView().setItemChecked(which, false);
                    break;
                }

            }

        }
    });


    alertDialog.show();
}
于 2013-03-27T04:50:04.017 に答える