Котлин - Проблемы с чтением текста из динамически редактируемого текста - PullRequest
0 голосов
/ 01 марта 2019

Я создаю динамически редактируемый текст.Первая строка является статической и интегрирована в макет.Следующие строки динамически, а ваш макет находится в другом XML.

enter image description here

Я могу прочитать значение первой строки (строка статическая), но когда пользователь касаетсяна «следующий» вариант в клавиатуре.Я попытался использовать «addTextChangedListener», но текст выглядит как «o; on; one».

Динамически строки, я не могу прочитать значения.

Вот мой код:

/*Add Line*/
holder.add_field_button.setOnClickListener {
    holder.parent_linear_layout.apply {
        val inflater = LayoutInflater.from(context)
        val rowView = inflater.inflate(R.layout.used_products_field, this, false)
        val rowViewDeleteButton = rowView.delete_button_din
        val readTextDin = rowView.number_edit_text_din

        holder.parent_linear_layout.addView(rowView, holder.parent_linear_layout.childCount!!)

        readTextDin.setOnEditorActionListener { v, actionId, event ->
                        if (actionId == EditorInfo.IME_ACTION_DONE) {
                            if (rowView.number_edit_text_din.text.isNotEmpty()) {
                                intervObject.Products += rowView.number_edit_text_din.text.toString() + ";"
                            }
                        }
                        false
                    }

        rowView.delete_button_din.setOnClickListener {
            holder.parent_linear_layout.removeView(it.parent as View)
        }

        //remove row
        removeField(holder.delete_button, holder.parent_linear_layout)
    }
}

/*First Line*/
holder.number_edit_text.setOnEditorActionListener { v, actionId, event ->
                if (actionId == EditorInfo.IME_ACTION_DONE) {
                    holder.number_edit_text.clearFocus()
                    hideKeyboardFrom(context, holder.number_edit_text)

                    if (holder.number_edit_text.text.isNotEmpty()) {
                        intervObject.Products += holder.number_edit_text.text.toString() + ";"
                    }
                }
                false
}

Как я могу решить мою проблему?

1 Ответ

0 голосов
/ 01 марта 2019

Ваша проблема здесь

intervObject.Products += holder.number_edit_text.text.toString() + ";"

Каждый раз, когда вы ее изменяете, вы добавляете текущий текст в эту переменную.Поэтому, когда он изменится на o, вы добавите o;, а затем, когда он изменится на on, вы добавите on;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...