Как динамически добавлять edittext в Android?

#android #android-studio #android-layout #android-listview

#Android #android-studio #android-макет #android-listview

Вопрос:

Как динамически добавлять edittext в адаптер?

у меня есть адаптер, с помощью которого я создаю edittext для пользователя для динамического ввода данных.

я сохраняю весь созданный текст редактирования из Json, полученный с сервера, в списке. Теперь мне даже нужно предоставить дополнительный текст для редактирования, чтобы пользователь мог добавлять динамические / пользовательские данные при нажатии кнопки?

Как мне это сделать?

     ArrayList<EditText> list = new ArrayList<>();
    list.add(holder.editText);
  

Сначала я получу заголовок / подсказку для редактирования текста от пользователя, используя окно предупреждения, подобное этому:

 addField.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context, R.style.AlertDialogStyle);
            alertDialog.setMessage("");


            final EditText input = new EditText(context);
            input.setGravity(Gravity.CENTER);
            input.setHint("Enter Title for custom field");

            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.MATCH_PARENT);
            input.setLayoutParams(lp);
            alertDialog.setView(input);
            alertDialog.setIcon(R.drawable.logo);

            alertDialog.setPositiveButton("Set",
                    new DialogInterface.OnClickListener()
                    {
                        public void onClick(DialogInterface dialog, int which)
                        {
                            list.add(holder.editText); //**App Crashes while doing this**
                        }
                    });

            alertDialog.setCancelable(false).show();
        }
    });
  

Edittext не добавляется в список, и приложение вылетает при нажатии на SET, из alertBox

Ответ №1:

Я думаю, вы должны предоставить хотя бы один EditText для фокусировки в XML. Затем в java вы можете создавать EditTexts и программно добавлять параметры и т. Д. Этот исходный код работал для меня:

 EditText editText = new EditText(context);
            editText.setLayoutParams(layoutParamsForEdittext);
            editText.setBackground(context.getResources().getDrawable(R.drawable.bg_rounded_grey_border));
            editText.setId(surveyAnswers.getId());
            editText.setPadding(8, 8, 8, 8);
            editText.setScrollContainer(true);
            editText.setTextSize(16);
            editText.setInputType(InputType.TYPE_CLASS_NUMBER);
            editText.setFilters(new InputFilter[]{filter, new InputFilter.LengthFilter(10)});
            editText.setGravity(Gravity.TOP);
            editText.setHintTextColor(context.getResources().getColor(R.color.colorTextHint));
            editText.setHint(surveyAnswers.getText());
          
            linearLayoutShelfShareAnswer.addView(editText);
  

Комментарии:

1. Новый edittext в адаптере xml правильный? и что такое linearLayoutShelfShareAnswer ?

2. @Test Я сделал это в своем классе ViewHolder. Я создал новый EditText программно и linearLayoutShelfShareAnswer.addView(EditText); здесь я просто добавляю свой новый EditText в LinearLayout. linearLayoutShelfShareAnswer — это мой LinearLayout