2013-03-22 79 views
0

我有一个multichoice对话框,但是我有一个小问题。这是代码:Android和多选对话框

int in; 
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]); 
    in = 0; 
     DialogInterface.OnMultiChoiceClickListener measurementsDialogListener = new DialogInterface.OnMultiChoiceClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which, boolean isChecselectedMeasurementsChecked){ 
      if(isChecselectedMeasurementsChecked) 
       if(in<3){ 
        selectedMeasurements.add(measurements[which]); 
        in++; 
       } 

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

      onChangeSelectedMeasurements(); 
     } 
     }; 

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

     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
protected void onChangeSelectedMeasurements() { 
    StringBuilder stringBuilder = new StringBuilder(); 

    for(CharSequence colour : selectedMeasurements) 
    stringBuilder.append(colour + ","); 

} 

一切工作很好,我有一个列表与一些元素。但我想添加功能,我不能选择超过3个元素。现在我可以从列表中选择所有元素。我想实现我只能选择3个元素。我怎样才能做到这一点?

回答

0

你可能只是有一个计数器变量,如果它等于3,那么onClick表示你不能再选择,如果它更多,那么你将该对话框项设置为未选中。我没有尝试过,但它可能工作。然而,更好的方法,特别是如果你要增加更多的功能,可以考虑使用Actviitydialog theme。所有你需要做的就是添加

android:theme="@android:style/Theme.Dialog" 

Activitymanifest,它会给一个dialog的外观与Activity的所有功能。希望这可以帮助

+0

我知道应该如何实现这一目标,但是我需要解决方案我该如何在代码中实现这一点。 – user1302569 2013-03-22 18:54:18