我创建一个动态编辑文本。第一行是静态的,并且集成在布局上。接下来的几行是动态的,您的布局在另一个xml中。
我可以读取第一行的值(静态行),但是当用户触摸键盘上的“下一个”选项时。我尝试使用“ 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
}
我该如何解决我的问题?
答案 0 :(得分:0)
您的问题在这里
intervObject.Products += holder.number_edit_text.text.toString() + ";"
每次更改它时,都会将当前文本添加到此变量中。因此,当它更改为o
时,您将添加o;
,然后当它更改为on
时,您将添加on;
您可以使用edittext作为键将其存储在地图中。这样,每次更改时,您将只替换值,而不添加其他版本!