Снятие отметки с одного элемента в Alertdialog listview очищает все данные вместо снятия отметки (setMultiChoiceItems) - PullRequest
0 голосов
/ 17 июня 2019
final EditText show_brand_list = (EditText) findViewById(R.id.brand);
        show_brand_list.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String checkedname = show_brand_list.getText().toString();
                for (int i = 0; i < listItemsx.length; i++) {
                    if (checkedname.contains(listItemsx[i])) {
                        checkedItemsx[i] = true;
                    } else {
                        checkedItemsx[i] = false;
                    }
                }

                AlertDialog.Builder mBuilder = new AlertDialog.Builder(activity_competitor_edit.this, R.style.MyDialogTheme);
                mBuilder.setTitle("List of Brands:(" + valuext + ")");
                mBuilder.setMultiChoiceItems(listItemsx, checkedItemsx, new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        try {
                            if (isChecked) {
                                mUserItemsx.add(which);
                            } else {
                                mUserItemsx.remove((Integer) which);
                            }
                        } catch (Exception e) {

                        }
                    }
                });

                mBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        if (mUserItemsx.size() != 0) {
                            show_brand_list.setText("");
                            String itemx = "";
                            for (int i = 0; i < mUserItemsx.size(); i++) {
                                itemx = itemx + listItemsx[mUserItemsx.get(i)];
                                if (i != mUserItemsx.size() - 1) {
                                    itemx = itemx + ",";
                                }
                            }
                            show_brand_list.setText(itemx);
                        } else {
                            show_brand_list.setText("");
                        }
                    }
                });

//                mBuilder.setNegativeButton("Dismiss", new DialogInterface.OnClickListener() {
//                    @Override
//                    public void onClick(DialogInterface dialog, int which) {
//                        dialog.dismiss();
//                    }
//                });


                mBuilder.setNeutralButton("Clear All", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        for (int i = 0; i < checkedItemsx.length; i++) {
                            checkedItemsx[i] = false;
                            mUserItemsx.clear();
                            String item = "";
                            setcompother(item);
                            show_brand_list.setText("");
                        }
                    }
                });

                mBuilder.create().show();

            }
        });

Вот что делает мой код. Когда я щелкаю EditText, в диалоговом окне предупреждения setMultiChoiceItems отображаются проверенные элементы, основанные на том, что содержит мой EditText. Однако, когда я снимаю галочку с одной информации. Все данные в моем EditText ушли вместо элемента, который не был проверен. Что не так с моим кодом. Я не, если это из-за массива или в порядке кнопки

...