2013-10-10 41 views
0

我有下面的代碼獲取多種選擇從用戶:如何在多選擇轉換爲單選項對話框

protected Button selectColoursButton; 

    protected CharSequence[] colours = { "Red", "Green", "Blue", "Yellow", "Orange", "Purple", "MAGENTA", "WHITE", "SKYBLUE" }; 
    protected ArrayList<CharSequence> selectedColours = new ArrayList<CharSequence>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    selectColoursButton = (Button) findViewById(R.id.select_colours); 
    selectColoursButton.setOnClickListener(test); 

} 

View.OnClickListener test = new View.OnClickListener() { 
    public void onClick(View v) { 
     switch(v.getId()) { 
      case R.id.select_colours: 
      // TODO: Show the colours dialog 
       showSelectColoursDialog(); 
      break; 

      default: 
      break; 
     } 

    } 
}; 

protected void showSelectColoursDialog() { 
     boolean[] checkedColours = new boolean[colours.length]; 
     int count = colours.length; 

     for(int i = 0; i < count; i++) 
     checkedColours[i] = selectedColours.contains(colours[i]); 

     DialogInterface.OnMultiChoiceClickListener coloursDialogListener = new DialogInterface.OnMultiChoiceClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
      if(isChecked) { 
      selectedColours.add(colours[which]); 
      dialog.dismiss(); 
      } 
      else 
      selectedColours.remove(colours[which]); 

      onChangeSelectedColours(); 
     } 
     }; 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Select Colours"); 
     builder.setMultiChoiceItems(colours, checkedColours, coloursDialogListener); 

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

protected void onChangeSelectedColours() { 
     StringBuilder stringBuilder = new StringBuilder(); 

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

     selectColoursButton.setText(stringBuilder.toString()); 
    } 

如何轉換它,使只有它單一的選擇,一旦選擇選擇對話框關閉?

回答

1

嘗試

builder.setSingleChoiceItems(String[] items, int defaultPos, DialogInterface.OnClickListener listener) 
+0

感謝您的答覆。我知道它應該被寫入的方式,但我將如何更改現有的'builder'行? – Si8