2017-07-17 21 views
1

我的問題是我不想兩次選擇相同的選項。 第一次點擊時應該禁用。稍後當我們選擇另一個項目時,應啓用禁用項目。我怎樣才能做到這一點?如何啓用和禁用alertdialog中的項目

public class AddDriverStateDialog extends DialogFragment { 
    private static AddDriverStateDialog addDriverStateDialog; 

    // Data references 
    private int DRIVER_STATE = 0; 
    private final String[] items = {"On Duty", "Off Duty", "Sleeper", "Driving","Yard Move","Personal Conveyance"}; 
    private ItemAdapter itemAdapter; 
    // UI References 
    private View view; 
    private RadioRealButtonGroup radioButtonGroup; 
    private EditText note,edittime; 
    Calendar calendar; 
    private MainActivity mainActivity; 

    public static AddDriverStateDialog newInstance(MainActivity mainActivity) { 
     if (addDriverStateDialog == null) { 
      addDriverStateDialog = new AddDriverStateDialog(); 
     } 

     addDriverStateDialog.mainActivity = mainActivity; 
     return addDriverStateDialog; 
    } 


    @Override 
    public void onResume() { 
     ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes(); 
     params.width = ViewGroup.LayoutParams.MATCH_PARENT; 
     getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); 
     super.onResume(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Initialise UI elements 
     view = LayoutInflater.from(mainActivity).inflate(R.layout.dialog_add_driver_state, null); 
     radioButtonGroup = (RadioRealButtonGroup) view.findViewById(R.id.radioGroup_dialog_addDriverState_driverStates); 
     note = (EditText) view.findViewById(R.id.et_dialog_addDriverState_note); 
     //edittime= (EditText)view.findViewById(R.id.et_dialog_addDriverState_time); 
     calendar = Calendar.getInstance(); 

     // UI Interaction listeners 
     /* Driver State Selection Listener */ 
     radioButtonGroup.setOnClickedButtonListener(new RadioRealButtonGroup.OnClickedButtonListener() { 
      @Override 
      public void onClickedButton(RadioRealButton button, int position) { 
       switch (button.getId()) { 
        case R.id.radioBtn_dialog_addDriverState_offDuty: 
         DRIVER_STATE = DriverState.STATE_OFFLINE; 
         break; 

        case R.id.radioBtn_dialog_addDriverState_onDuty: 
         DRIVER_STATE = DriverState.STATE_ONLINE; 
         break; 

        case R.id.radioBtn_dialog_addDriverState_sleeperBerth: 
         DRIVER_STATE = DriverState.STATE_SLEEPER; 
         break; 

        case R.id.radioBtn_dialog_addDriverState_driving: 
         DRIVER_STATE = DriverState.STATE_DRIVING; 
         break; 
        case R.id.radioBtn_dialog_addDriverState_yard_move: 
         DRIVER_STATE = DriverState.STATE_YARD_MOVE; 
         break; 
        case R.id.radioBtn_dialog_addDriverState_personal_conveyance: 
         DRIVER_STATE=DriverState.STATE_PERSONAL_CONVEYANCE; 
         break; 
       } 

      } 

     }); 



    } 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     return new AlertDialog.Builder(mainActivity) 
       .setTitle("Add Event") 
       .setCancelable(false) 
       .setView(view) 

       .setPositiveButton("Log Event", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         mainActivity.updateDashboard(DRIVER_STATE, note.getText().toString()); 
        } 
       }) 
       .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dismiss(); 
        } 
       }) 
       .create(); 

    } 
} 
+0

使用bools。如果選項被點擊,將其設置爲false。如果該按鈕爲false,則禁用該按鈕,否則啓用該按鈕。最簡單的方法 – DroiDev

回答

0

爲什麼不使用如here這樣的選項的對話框?

0
In you Adapter 
    1. Take a list, add the selected item(Model) to the list and disable the item position(or show a check mark to right side), 
before adding this model to the list clear the list and update the adapter using notifyDataSetChanged(). 

    so always there is only one item in the list 
    you can get the value using that list. 
相關問題