2016-08-03 35 views
1

I Multi Auswahl-Dialog AlertDialog.Buiilder mitMulti Wahl DialogFragment markierten Produkte zählen

 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(); 

Auch ich positive Taste deaktiviert machen möchten, wenn keine Elemente geprüft:

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

mDialog.getListView() .getCheckedItemCount() gibt vor dem Klick immer 0 zurück, gibt es eine Möglichkeit, die Anzahl der geprüften Elemente vor dem Klick zu kennen, außer dass das Feld mCheckedItems Array durchlaufen wurde?

+0

Versuchen Sie benutzerdefinierte mit Ihrem eigenen Layout-Datei – MathaN

Antwort

1

Dies ist besser, um einen Zähler auf Klassenebene zu verwalten. und an jedem onClick von OnMultiChoiceClickListener re-initialisieren Sie es einfach Größe wie pro Stück zählen. Und vergessen Sie nicht, es mit 0 zu initialisieren, wenn Sie den Dialog anzeigen. Und Sie können auch prüfen, ob Ihr Zähler Null ist und dann nicht den OK-Knopf klicken.

Hoffe, es wird Ihnen helfen :)

+0

Dank Dialog, ich weiß, dass die Lösung) Können Sie mir erklären, warum zum Beispiel ((Alertdialog) getDialog()). GetListView(). getCheckedItemPositions() funktioniert zum Beispiel bei positivem Button-Klick, funktioniert aber nicht in onCreateDialog() oder onStart()? – Vahan