2017-07-17 11 views
1

私の質問は、同じオプションを2度選択したくないということです。 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

boolを使用してください。オプションをクリックすると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. 
関連する問題