2016-08-03 6 views
1

создать диалог выбора несколько используя AlertDialog.BuiilderМульти выбора DialogFragment проверил пункты подсчитывать

 mDialog = new AlertDialog.Builder(getActivity()).setIconAttribute(mIcon).setTitle(mTitle) 
      .setPositiveButton(mPositiveButton, new OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        mCallbacks.onPositiveClick(((AlertDialog) getDialog()).getListView().getCheckedItemPositions(), mChoices); 
       } 
      }).setNegativeButton(mNegativeButton, new OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        mCallbacks.onNegativeClick(((AlertDialog) getDialog()).getListView().getCheckedItemPositions()); 
       } 
      }).setMultiChoiceItems(mChoices, mCheckedItems, new OnMultiChoiceClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
        if (mIsCheckedRequired) { 
         AlertDialog alertDialog = ((AlertDialog) dialog); 

         if (alertDialog.getListView().getCheckedItemCount() == 0) 
          alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); 
         else 
          alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); 
        } 

       } 
      }).create(); 

Также я хочу сделать положительную кнопку отключена, когда никаких пунктов не проверен:

@Override 
public void onStart() { 
    super.onStart(); 
    if (mIsCheckedRequired && mDialog.getListView().getCheckedItemCount() == 0) { 
     mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); 
    } 
} 

mDialog.getListView() .getCheckedItemCount() всегда извлекает 0 перед нажатием, есть ли способ узнать количество проверенных элементов перед щелчком, кроме наличия массива mCheckedItems и пробегающего его?

+0

Попробуйте пользовательский диалог с собственным файлом верстка – MathaN

ответ

1

Для этого лучше управлять счетчиком уровня. и на каждые onClick из OnMultiChoiceClickListener просто повторно инициализируйте его размером по количеству элементов. И не забудьте инициализировать его на 0 всякий раз, когда вы показываете диалог. И вы также можете проверить, равен ли ваш счетчик нулю, а затем не обрабатывать кнопку ОК.

Надеется, что это поможет :)

+0

Спасибо, я знаю, что решение) Можете ли вы объяснить мне, почему, например, ((AlertDialog) getDialog()). GetListView(). getCheckedItemPositions() корректно работает, например, при положительном нажатии кнопки, но не работает в onCreateDialog() или onStart()? – Vahan

 Смежные вопросы

  • Нет связанных вопросов^_^