Browse Source

Resolved https://github.com/afollestad/material-dialogs/issues/793, added getListView() to MaterialListPreference

Aidan Follestad 9 years ago
parent
commit
64a7e87963

+ 19 - 13
commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialListPreference.java

@@ -12,6 +12,7 @@ import android.preference.PreferenceManager;
 import android.support.annotation.NonNull;
 import android.util.AttributeSet;
 import android.view.View;
+import android.widget.ListView;
 
 import com.afollestad.materialdialogs.DialogAction;
 import com.afollestad.materialdialogs.MaterialDialog;
@@ -58,6 +59,11 @@ public class MaterialListPreference extends ListPreference {
         return mDialog;
     }
 
+    public ListView getListView() {
+        if (getDialog() == null) return null;
+        return ((MaterialDialog) getDialog()).getListView();
+    }
+
     @Override
     protected void showDialog(Bundle state) {
         if (getEntries() == null || getEntryValues() == null) {
@@ -87,20 +93,20 @@ public class MaterialListPreference extends ListPreference {
                         }
                     }
                 })
-                .callback(new MaterialDialog.ButtonCallback() {
-                    @Override
-                    public void onNeutral(MaterialDialog dialog) {
-                        onClick(dialog, DialogInterface.BUTTON_NEUTRAL);
-                    }
-
-                    @Override
-                    public void onNegative(MaterialDialog dialog) {
-                        onClick(dialog, DialogInterface.BUTTON_NEGATIVE);
-                    }
-
+                .onAny(new MaterialDialog.SingleButtonCallback() {
                     @Override
-                    public void onPositive(MaterialDialog dialog) {
-                        onClick(dialog, DialogInterface.BUTTON_POSITIVE);
+                    public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
+                        switch (which) {
+                            case POSITIVE:
+                                MaterialListPreference.this.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
+                                break;
+                            case NEGATIVE:
+                                MaterialListPreference.this.onClick(dialog, DialogInterface.BUTTON_NEGATIVE);
+                                break;
+                            case NEUTRAL:
+                                MaterialListPreference.this.onClick(dialog, DialogInterface.BUTTON_NEUTRAL);
+                                break;
+                        }
                     }
                 })
                 .negativeText(getNegativeButtonText())