Search in sources :

Example 96 with DialogAction

use of com.afollestad.materialdialogs.DialogAction in project CoCoin by Nightonke.

the class AccountBookSettingActivity method changeLogo.

// change the user logo/////////////////////////////////////////////////////////////////////////////
private void changeLogo() {
    User user = BmobUser.getCurrentUser(CoCoinApplication.getAppContext(), User.class);
    if (user == null) {
        new MaterialDialog.Builder(this).iconRes(R.drawable.cocoin_logo).typeface(CoCoinUtil.GetTypeface(), CoCoinUtil.GetTypeface()).limitIconToDefaultSize().title(R.string.login_first_title).content(R.string.login_first_content).positiveText(R.string.ok).neutralText(R.string.cancel).onAny(new MaterialDialog.SingleButtonCallback() {

            @Override
            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                if (which == DialogAction.POSITIVE) {
                    userOperator();
                }
            }
        }).show();
        return;
    }
    new MaterialDialog.Builder(this).iconRes(R.drawable.cocoin_logo).typeface(CoCoinUtil.GetTypeface(), CoCoinUtil.GetTypeface()).limitIconToDefaultSize().title(R.string.change_logo_title).content(R.string.change_logo_content).positiveText(R.string.from_gallery).negativeText(R.string.from_camera).neutralText(R.string.cancel).onAny(new MaterialDialog.SingleButtonCallback() {

        @Override
        public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
            if (which == DialogAction.POSITIVE) {
                Intent intent1 = new Intent(Intent.ACTION_PICK, null);
                intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
                startActivityForResult(intent1, 1);
            } else if (which == DialogAction.NEGATIVE) {
                Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent2.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(CoCoinApplication.getAppContext().getFilesDir() + CoCoinUtil.LOGO_NAME)));
                startActivityForResult(intent2, 2);
            }
        }
    }).show();
}
Also used : BmobUser(cn.bmob.v3.BmobUser) User(com.nightonke.saver.model.User) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) DialogAction(com.afollestad.materialdialogs.DialogAction) NonNull(android.support.annotation.NonNull) Intent(android.content.Intent) BmobFile(cn.bmob.v3.datatype.BmobFile) File(java.io.File)

Example 97 with DialogAction

use of com.afollestad.materialdialogs.DialogAction in project Tapad by berict.

the class UserBenefitsActivity method showDialogPreset.

private void showDialogPreset(int delay) {
    Handler dialogDelay = new Handler();
    dialogDelay.postDelayed(new Runnable() {

        @Override
        public void run() {
            int color;
            switch(prefs.getInt("scheme", 0)) {
                case 1:
                    color = R.color.hello;
                    break;
                case 2:
                    color = R.color.roses;
                    break;
                case 3:
                    color = R.color.faded;
                    break;
                default:
                    color = R.color.hello;
                    break;
            }
            PresetDialog = new MaterialDialog.Builder(activity).title(R.string.dialog_preset_title).content(R.string.user_benefits_dialog_hint).items(R.array.presets).cancelable(false).autoDismiss(false).itemsCallbackSingleChoice(0, new MaterialDialog.ListCallbackSingleChoice() {

                @Override
                public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
                    setPreset(which);
                    switch(which) {
                        case 0:
                            PresetDialog.getBuilder().widgetColorRes(R.color.hello).positiveColorRes(R.color.hello);
                            break;
                        case 1:
                            PresetDialog.getBuilder().widgetColorRes(R.color.roses).positiveColorRes(R.color.roses);
                            break;
                        case 2:
                            PresetDialog.getBuilder().widgetColorRes(R.color.faded).positiveColorRes(R.color.faded);
                            break;
                        default:
                            break;
                    }
                    return true;
                }
            }).alwaysCallSingleChoiceCallback().widgetColorRes(color).positiveText(R.string.user_benefits_dialog_positive).positiveColorRes(R.color.colorAccent).onPositive(new MaterialDialog.SingleButtonCallback() {

                @Override
                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                    PresetDialog.dismiss();
                    intent.intentFlag(activity, "activity.MainActivity", 0);
                    prefs.edit().putInt("quickstart", 0).apply();
                }
            }).show();
        }
    }, delay);
}
Also used : MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) DialogAction(com.afollestad.materialdialogs.DialogAction) NonNull(android.support.annotation.NonNull) Handler(android.os.Handler) View(android.view.View) TextView(android.widget.TextView)

Example 98 with DialogAction

use of com.afollestad.materialdialogs.DialogAction in project Tapad by berict.

the class MainActivity method setQuickstart.

public void setQuickstart(final Activity activity) {
    final SharedPreferences pref = activity.getSharedPreferences(APPLICATION_ID, MODE_PRIVATE);
    try {
        currentVersionCode = activity.getPackageManager().getPackageInfo(activity.getPackageName(), 0).versionCode;
        Log.i("versionCode", "versionCode retrieved = " + String.valueOf(currentVersionCode));
    } catch (android.content.pm.PackageManager.NameNotFoundException e) {
        // handle exception
        currentVersionCode = -1;
        Log.e("NameNotFound", "NNFE, currentVersionCode = -1");
    }
    try {
        Log.d("VersionCode", "sharedPrefs versionCode = " + String.valueOf(pref.getInt("versionCode", -1)) + " , currentVersionCode = " + String.valueOf(currentVersionCode));
        Log.d("VersionCode", "Updated, show changelog");
        if (currentVersionCode > pref.getInt("versionCode", -1)) {
            // new app and updates
            new MaterialDialog.Builder(activity).title(w.getStringId("info_tapad_info_changelog")).content(w.getStringId("info_tapad_info_changelog_text")).contentColorRes(R.color.dark_primary).positiveText(R.string.dialog_close).positiveColorRes(R.color.colorAccent).dismissListener(new DialogInterface.OnDismissListener() {

                @Override
                public void onDismiss(DialogInterface dialogInterface) {
                    // Dialog
                    if (pref.getInt(qs, 0) == 0) {
                        closeToolbar(activity);
                        new MaterialDialog.Builder(activity).title(R.string.dialog_quickstart_welcome_title).content(R.string.dialog_quickstart_welcome_text).positiveText(R.string.dialog_quickstart_welcome_positive).positiveColorRes(R.color.colorAccent).negativeText(R.string.dialog_quickstart_welcome_negative).negativeColorRes(R.color.dark_secondary).onPositive(new MaterialDialog.SingleButtonCallback() {

                            @Override
                            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                pref.edit().putInt(qs, 0).apply();
                                Log.i("sharedPrefs", "quickstart edited to 0");
                            }
                        }).onNegative(new MaterialDialog.SingleButtonCallback() {

                            @Override
                            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                pref.edit().putInt(qs, -1).apply();
                                Log.i("sharedPrefs", "quickstart edited to -1");
                            }
                        }).dismissListener(new DialogInterface.OnDismissListener() {

                            @Override
                            public void onDismiss(DialogInterface dialogInterface) {
                                if (pref.getInt(qs, 0) == 0) {
                                    Log.i("setQuickstart", "Quickstart started");
                                    if (promptFab != null) {
                                        return;
                                    }
                                    promptToggle = new MaterialTapTargetPrompt.Builder(activity).setTarget(activity.findViewById(R.id.tgl1)).setPrimaryText(R.string.dialog_tap_target_toggle_primary).setSecondaryText(R.string.dialog_tap_target_toggle_secondary).setAnimationInterpolator(new FastOutSlowInInterpolator()).setAutoDismiss(false).setAutoFinish(false).setFocalColourFromRes(R.color.white).setCaptureTouchEventOutsidePrompt(true).setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() {

                                        @Override
                                        public void onHidePrompt(MotionEvent event, boolean tappedTarget) {
                                            if (tappedTarget) {
                                                promptToggle.finish();
                                                promptToggle = null;
                                                pref.edit().putInt(qs, 1).apply();
                                                Log.i("sharedPrefs", "quickstart edited to 1");
                                            }
                                        }

                                        @Override
                                        public void onHidePromptComplete() {
                                            promptButton = new MaterialTapTargetPrompt.Builder(activity).setTarget(activity.findViewById(R.id.btn31)).setPrimaryText(R.string.dialog_tap_target_button_primary).setSecondaryText(R.string.dialog_tap_target_button_secondary).setAnimationInterpolator(new FastOutSlowInInterpolator()).setAutoDismiss(false).setAutoFinish(false).setFocalColourFromRes(R.color.white).setFocalRadius((float) w.convertDPtoPX(80, activity)).setCaptureTouchEventOutsidePrompt(true).setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() {

                                                @Override
                                                public void onHidePrompt(MotionEvent event, boolean tappedTarget) {
                                                    if (tappedTarget) {
                                                        promptButton.finish();
                                                        promptButton = null;
                                                        pref.edit().putInt(qs, 3).apply();
                                                        Log.i("sharedPrefs", "quickstart edited to 3");
                                                    }
                                                }

                                                @Override
                                                public void onHidePromptComplete() {
                                                    promptSwipe = new MaterialTapTargetPrompt.Builder(activity).setTarget(activity.findViewById(R.id.btn23)).setPrimaryText(R.string.dialog_tap_target_swipe_primary).setSecondaryText(R.string.dialog_tap_target_swipe_secondary).setAnimationInterpolator(new FastOutSlowInInterpolator()).setAutoDismiss(false).setAutoFinish(false).setFocalColourFromRes(R.color.white).setFocalRadius((float) w.convertDPtoPX(80, activity)).setCaptureTouchEventOutsidePrompt(true).setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() {

                                                        @Override
                                                        public void onHidePrompt(MotionEvent event, boolean tappedTarget) {
                                                            if (tappedTarget) {
                                                                promptSwipe.finish();
                                                                promptSwipe = null;
                                                                pref.edit().putInt(qs, 4).apply();
                                                                Log.i("sharedPrefs", "quickstart edited to 4");
                                                            }
                                                        }

                                                        @Override
                                                        public void onHidePromptComplete() {
                                                            promptLoop = new MaterialTapTargetPrompt.Builder(activity).setTarget(activity.findViewById(R.id.btn42)).setPrimaryText(R.string.dialog_tap_target_loop_primary).setSecondaryText(R.string.dialog_tap_target_loop_secondary).setAnimationInterpolator(new FastOutSlowInInterpolator()).setAutoDismiss(false).setAutoFinish(false).setFocalColourFromRes(R.color.white).setFocalRadius((float) w.convertDPtoPX(80, activity)).setCaptureTouchEventOutsidePrompt(true).setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() {

                                                                @Override
                                                                public void onHidePrompt(MotionEvent event, boolean tappedTarget) {
                                                                    if (tappedTarget) {
                                                                        promptLoop.finish();
                                                                        promptLoop = null;
                                                                        pref.edit().putInt(qs, 5).apply();
                                                                        Log.i("sharedPrefs", "quickstart edited to 5");
                                                                    }
                                                                }

                                                                @Override
                                                                public void onHidePromptComplete() {
                                                                    promptPattern = new MaterialTapTargetPrompt.Builder(activity).setTarget(activity.findViewById(R.id.tgl7)).setPrimaryText(R.string.dialog_tap_target_pattern_primary).setSecondaryText(R.string.dialog_tap_target_pattern_secondary).setAnimationInterpolator(new FastOutSlowInInterpolator()).setAutoDismiss(false).setAutoFinish(false).setFocalColourFromRes(R.color.white).setCaptureTouchEventOutsidePrompt(true).setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() {

                                                                        @Override
                                                                        public void onHidePrompt(MotionEvent event, boolean tappedTarget) {
                                                                            if (tappedTarget) {
                                                                                promptPattern.finish();
                                                                                promptPattern = null;
                                                                                pref.edit().putInt(qs, 5).apply();
                                                                                Log.i("sharedPrefs", "quickstart edited to 5");
                                                                            }
                                                                        }

                                                                        @Override
                                                                        public void onHidePromptComplete() {
                                                                            promptFab = new MaterialTapTargetPrompt.Builder(activity).setTarget(activity.findViewById(R.id.fab)).setPrimaryText(R.string.dialog_tap_target_fab_primary).setSecondaryText(R.string.dialog_tap_target_fab_secondary).setAnimationInterpolator(new FastOutSlowInInterpolator()).setAutoDismiss(false).setAutoFinish(false).setFocalColourFromRes(R.color.white).setCaptureTouchEventOutsidePrompt(true).setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() {

                                                                                @Override
                                                                                public void onHidePrompt(MotionEvent event, boolean tappedTarget) {
                                                                                    if (tappedTarget) {
                                                                                        promptFab.finish();
                                                                                        promptFab = null;
                                                                                        pref.edit().putInt(qs, 6).apply();
                                                                                        Log.i("sharedPrefs", "quickstart edited to 6");
                                                                                    }
                                                                                }

                                                                                @Override
                                                                                public void onHidePromptComplete() {
                                                                                    promptPreset = new MaterialTapTargetPrompt.Builder(activity).setTarget(activity.findViewById(R.id.toolbar_preset)).setPrimaryText(R.string.dialog_tap_target_preset_primary).setSecondaryText(R.string.dialog_tap_target_preset_secondary).setAnimationInterpolator(new FastOutSlowInInterpolator()).setAutoDismiss(false).setAutoFinish(false).setFocalColourFromRes(R.color.blue_500).setCaptureTouchEventOutsidePrompt(true).setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() {

                                                                                        @Override
                                                                                        public void onHidePrompt(MotionEvent event, boolean tappedTarget) {
                                                                                            if (tappedTarget) {
                                                                                                promptPreset.finish();
                                                                                                promptPreset = null;
                                                                                                pref.edit().putInt(qs, 7).apply();
                                                                                                Log.i("sharedPrefs", "quickstart edited to 7");
                                                                                            }
                                                                                        }

                                                                                        @Override
                                                                                        public void onHidePromptComplete() {
                                                                                        }
                                                                                    }).show();
                                                                                }
                                                                            }).show();
                                                                        }
                                                                    }).show();
                                                                }
                                                            }).show();
                                                        }
                                                    }).show();
                                                }
                                            }).show();
                                        }
                                    }).show();
                                } else {
                                    Log.i("setQuickstart", "Quickstart canceled");
                                    pref.edit().putInt(qs, -1).apply();
                                }
                            }
                        }).show();
                    }
                    // Change this
                    pref.edit().putInt("versionCode", currentVersionCode).apply();
                    Log.d("VersionCode", "putInt " + String.valueOf(pref.getInt("versionCode", -1)));
                }
            }).show();
        }
    } catch (Exception e) {
        Log.e("QuickstartException", e.getMessage());
    }
}
Also used : MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) SharedPreferences(android.content.SharedPreferences) DialogInterface(android.content.DialogInterface) MotionEvent(android.view.MotionEvent) DialogAction(com.afollestad.materialdialogs.DialogAction) NonNull(android.support.annotation.NonNull) FastOutSlowInInterpolator(android.support.v4.view.animation.FastOutSlowInInterpolator) MaterialTapTargetPrompt(uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt)

Example 99 with DialogAction

use of com.afollestad.materialdialogs.DialogAction in project Shuttle by timusus.

the class PlaylistUtils method createPlaylistDialog.

@SuppressLint("CheckResult")
private static void createPlaylistDialog(final Context context, final OnSavePlaylistListener listener) {
    @SuppressLint("InflateParams") View customView = LayoutInflater.from(context).inflate(R.layout.dialog_playlist, null);
    final EditText editText = customView.findViewById(R.id.editText);
    Observable.fromCallable(() -> makePlaylistName(context)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(name -> {
        editText.setText(name);
        if (!TextUtils.isEmpty(name)) {
            editText.setSelection(name.length());
        }
    }, error -> LogUtils.logException(TAG, "PlaylistUtils: Error Setting playlist name", error));
    MaterialDialog.Builder builder = DialogUtils.getBuilder(context).customView(customView, false).title(R.string.menu_playlist).positiveText(R.string.create_playlist_create_text).onPositive((materialDialog, dialogAction) -> {
        String name = editText.getText().toString();
        if (!name.isEmpty()) {
            idForPlaylistObservable(context, name).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(id -> {
                Uri uri;
                if (id >= 0) {
                    uri = ContentUris.withAppendedId(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, id);
                    clearPlaylist(id);
                } else {
                    ContentValues values = new ContentValues(1);
                    values.put(MediaStore.Audio.Playlists.NAME, name);
                    try {
                        uri = context.getContentResolver().insert(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, values);
                    } catch (IllegalArgumentException | NullPointerException e) {
                        Toast.makeText(context, R.string.dialog_create_playlist_error, Toast.LENGTH_LONG).show();
                        uri = null;
                    }
                }
                if (uri != null) {
                    listener.onSave(new Playlist(Playlist.Type.USER_CREATED, Long.valueOf(uri.getLastPathSegment()), name, true, false, true, true, true));
                }
            }, error -> LogUtils.logException(TAG, "PlaylistUtils: Error Saving playlist", error));
        }
    }).negativeText(R.string.cancel);
    final Dialog dialog = builder.build();
    dialog.show();
    TextWatcher textWatcher = new TextWatcher() {

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // don't care about this one
        }

        // Fixme:
        // It's probably best to just query all playlist names first, and then check against
        // that list, rather than requerying for each char change.
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String newText = editText.getText().toString();
            if (newText.trim().length() == 0) {
                ((MaterialDialog) dialog).getActionButton(DialogAction.POSITIVE).setEnabled(false);
            } else {
                ((MaterialDialog) dialog).getActionButton(DialogAction.POSITIVE).setEnabled(true);
                // check if playlist with current name exists already, and warn the user if so.
                idForPlaylistObservable(context, newText).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(id -> {
                    if (id >= 0) {
                        ((MaterialDialog) dialog).getActionButton(DialogAction.POSITIVE).setText(R.string.create_playlist_overwrite_text);
                    } else {
                        ((MaterialDialog) dialog).getActionButton(DialogAction.POSITIVE).setText(R.string.create_playlist_create_text);
                    }
                }, error -> LogUtils.logException(TAG, "PlaylistUtils: Error handling text change", error));
            }
        }

        public void afterTextChanged(Editable s) {
        // don't care about this one
        }
    };
    editText.addTextChangedListener(textWatcher);
}
Also used : EditText(android.widget.EditText) R(com.simplecity.amp_library.R) Spannable(android.text.Spannable) Completable(io.reactivex.Completable) Uri(android.net.Uri) PlayCountTable(com.simplecity.amp_library.sql.providers.PlayCountTable) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) Song(com.simplecity.amp_library.model.Song) Optional(com.annimon.stream.Optional) CheckBox(android.widget.CheckBox) ContentResolver(android.content.ContentResolver) MediaStore(android.provider.MediaStore) View(android.view.View) Schedulers(io.reactivex.schedulers.Schedulers) Log(android.util.Log) Playlist(com.simplecity.amp_library.model.Playlist) SubMenu(android.view.SubMenu) Query(com.simplecity.amp_library.model.Query) List(java.util.List) TextView(android.widget.TextView) ContentValues(android.content.ContentValues) Nullable(android.support.annotation.Nullable) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) SqlUtils(com.simplecity.amp_library.sql.SqlUtils) TextWatcher(android.text.TextWatcher) FileType(com.simplecity.amp_library.interfaces.FileType) Context(android.content.Context) Stream(com.annimon.stream.Stream) Environment(android.os.Environment) Dialog(android.app.Dialog) Intent(android.content.Intent) NonNull(android.support.annotation.NonNull) Single(io.reactivex.Single) Editable(android.text.Editable) ArrayList(java.util.ArrayList) SuppressLint(android.annotation.SuppressLint) SpannableStringBuilder(android.text.SpannableStringBuilder) Toast(android.widget.Toast) BaseFileObject(com.simplecity.amp_library.model.BaseFileObject) Observable(io.reactivex.Observable) UnsafeConsumer(com.simplecity.amp_library.rx.UnsafeConsumer) Cursor(android.database.Cursor) SqlBriteUtils(com.simplecity.amp_library.sql.sqlbrite.SqlBriteUtils) LayoutInflater(android.view.LayoutInflater) StyleSpan(android.text.style.StyleSpan) FileWriter(java.io.FileWriter) ProgressDialog(android.app.ProgressDialog) TextUtils(android.text.TextUtils) DialogAction(com.afollestad.materialdialogs.DialogAction) IOException(java.io.IOException) WorkerThread(android.support.annotation.WorkerThread) File(java.io.File) TimeUnit(java.util.concurrent.TimeUnit) ShuttleApplication(com.simplecity.amp_library.ShuttleApplication) Pair(android.support.v4.util.Pair) Crashlytics(com.crashlytics.android.Crashlytics) Collections(java.util.Collections) EditText(android.widget.EditText) ContentUris(android.content.ContentUris) ContentValues(android.content.ContentValues) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) View(android.view.View) TextView(android.widget.TextView) Uri(android.net.Uri) Playlist(com.simplecity.amp_library.model.Playlist) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) Dialog(android.app.Dialog) ProgressDialog(android.app.ProgressDialog) SuppressLint(android.annotation.SuppressLint) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) SuppressLint(android.annotation.SuppressLint)

Example 100 with DialogAction

use of com.afollestad.materialdialogs.DialogAction in project SQLPractice by Gear61.

the class QuestionFragment method giveUp.

@OnClick(R.id.view_answer)
public void giveUp() {
    final String answer = AnswerServer.getAnswer(mCurrentQuestion);
    new MaterialDialog.Builder(getActivity()).title(R.string.our_answer_query).content(answer).positiveText(android.R.string.yes).neutralText(R.string.copy_answer).onNeutral(new MaterialDialog.SingleButtonCallback() {

        @Override
        public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
            Utils.copyTextToClipboard(answer);
            Utils.showSnackbar(parent, getString(R.string.copy_confirmation));
        }
    }).show();
}
Also used : MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) DialogAction(com.afollestad.materialdialogs.DialogAction) NonNull(android.support.annotation.NonNull) BindString(butterknife.BindString) OnClick(butterknife.OnClick)

Aggregations

DialogAction (com.afollestad.materialdialogs.DialogAction)165 MaterialDialog (com.afollestad.materialdialogs.MaterialDialog)165 View (android.view.View)97 NonNull (android.support.annotation.NonNull)85 TextView (android.widget.TextView)59 DialogInterface (android.content.DialogInterface)51 Intent (android.content.Intent)45 ImageView (android.widget.ImageView)39 RecyclerView (android.support.v7.widget.RecyclerView)28 ArrayList (java.util.ArrayList)25 List (java.util.List)25 SuppressLint (android.annotation.SuppressLint)23 ListView (android.widget.ListView)21 LayoutInflater (android.view.LayoutInflater)20 AdapterView (android.widget.AdapterView)20 NonNull (androidx.annotation.NonNull)20 Dialog (android.app.Dialog)18 AlertDialog (androidx.appcompat.app.AlertDialog)18 Context (android.content.Context)17 MenuItem (android.view.MenuItem)16