Конструктор предупреждений в диалоговом окне материалов с использованием MultiChoiceItems - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь реализовать конструктор диалоговых окон предупреждений о материалах с элементами с несколькими вариантами выбора. Я пытаюсь отобразить список фильмов в виде флажков. Я столкнулся с трудностями при реализации опции «Выбрать все». Если я нажму кнопку Выбрать все , все параметры должны быть выбраны, но я не могу реализовать эту функцию. Подскажите, пожалуйста, как решить эту проблему?

My Activity

    package com.tcs.usingcheckbox;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.view.View;
    
    import com.google.android.material.dialog.MaterialAlertDialogBuilder;
    import com.google.android.material.textfield.TextInputEditText;
    
    public class MainActivity extends AppCompatActivity {
    
    
        private TextInputEditText typeOfMovies;
    
        private CharSequence[] movies;
        private boolean[] mSelectedItems, mNew;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            typeOfMovies = findViewById(R.id.typeOfMovies);
    
            movies = new CharSequence[]{
                    "Horror",
                    "Thriller",
                    "Comedy",
                    "Select All"
            };
    
            mSelectedItems = new boolean[]{
                    false,
                    false,
                    false,
                    false
            };
            mNew = new boolean[]{
                    false,
                    false,
                    false,
                    false
            };
    
            typeOfMovies.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(MainActivity.this);
                    builder.setTitle("View Options");
                    builder.setBackground(getResources().getDrawable(R.drawable.alert_dialog_bg));
                    builder.setMultiChoiceItems(movies, mSelectedItems, new DialogInterface.OnMultiChoiceClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                            mSelectedItems[which] = isChecked;
    
                        }
                    });
    
    
                    builder.setNegativeButton("Dismiss", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
                            for (int i = 0; i < mNew.length; i++) {
                                mSelectedItems[i] = mNew[i];
                            }
                            dialog.dismiss();
                        }
                    });
                    builder.setPositiveButton("Okay", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
                            typeOfMovies.setText("");
                            for (int i = 0; i < mSelectedItems.length; i++) {
                                mNew[i] = mSelectedItems[i];
                            }
                            for (int i = 0; i < mSelectedItems.length; i++) {
                                boolean checked = mSelectedItems[i];
                                if (checked) {
                                    if (movies[i].equals("Select All")) {
                                        typeOfMovies.setText("All Selected");
    
                                    } else {
                                        typeOfMovies.setText(typeOfMovies.getText().toString() + movies[i] + "\n");
                                    }
                                }
                            }
                        }
                    });
                    builder.setCancelable(false);
                    builder.show();
                }
            });
    
        }
    }

My XML

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
        <com.google.android.material.textfield.TextInputLayout
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp">
    
            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/typeOfMovies"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:cursorVisible="false"
                android:focusable="false"
                android:hint="Type of Movies"
                android:textSize="14sp" />
    
        </com.google.android.material.textfield.TextInputLayout>
    
    
    </LinearLayout>

My Alert Dialog Shape

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape>
                <solid android:color="@android:color/white" />
                <corners android:radius="16dp" />
            </shape>
        </item>
    </selector>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...