Флажок, который включает Edit Box Android - PullRequest
2 голосов
/ 04 апреля 2019

Мне нужно создать список типов ресторанов. Я уже написал простое диалоговое окно оповещения, в котором присутствует список флажков. Но я хочу, чтобы последний, называемый «больше», включал поле для редактирования, где пользователь может написать свой собственный тип, но я не знаю, как это сделать. Я новичок

Это текущий вывод моего приложения:

Выход приложения

Я хочу быть таким:

Требуемый выход

Здесь есть код диалога, если необходимо:

private TextView text; private String[] listItems; private boolean[] checkedItems; private ArrayList<Integer> selectedItems = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    text = findViewById(R.id.textView);

    listItems = getResources().getStringArray(R.array.menu);
    checkedItems = new boolean[listItems.length];

    text.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("Type of cusine");
            builder.setMultiChoiceItems(listItems, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    if(isChecked){
                        if(!selectedItems.contains(which)){

                            if(which == listItems.length-1){
                                dialog.dismiss();

                                AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);
                                builder2.setTitle("Enter your type");

                            }

                            selectedItems.add(which);
                        }
                    }else if(selectedItems.contains(which)){
                        selectedItems.remove(which);            //To avoid duplicates
                    }
                }
            });

            builder.setCancelable(false);
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String item = "";
                    for(int i=0; i<selectedItems.size(); i++){
                        item = item + listItems[selectedItems.get(i)];
                        if(i != selectedItems.size() - 1){
                            item = item + ", ";
                        }
                    }
                    text.setText(item);
                }
            });

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

            builder.setNeutralButton("Clear all", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    for(int i=0; i<checkedItems.length; i++){
                        checkedItems[i] = false;
                        selectedItems.clear();
                        text.setText("");
                    }
                }
            });

            AlertDialog dialog = builder.create();
            dialog.show();
        }
    });
}
...