【发布时间】:2021-04-26 03:29:21
【问题描述】:
我有一个RecyclerView,它的项目中有一个EditText。
对于每个EditText,我添加了一个textChangeListener。
每当用户键入一个字符时,我都想做一个输入验证,这样我就可以更改项目,例如在输入错误的情况下显示红色边框等...
完成验证后,我调用:
adapter.notifyItemChanged(itemPosition)
更新视图。
但问题是EditText 失去了焦点,我必须在框内再次单击才能继续输入。
这种情况有解决办法吗?调用notifyItemChanged 后如何在视图更新时继续输入?
适配器
class ItemAdapter() : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val inflater = LayoutInflater.from(parent.context)
val binding = LayoutItemBinding.inflate(inflater, parent, false)
binding.editText.addTextChangedListener {
// Do layout changes....
if (isInvalidInput) {
item.setError = true
....
...
}
adapter.notifyItemChanged(itemPosition)
}
return ItemViewHolder(binding)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
holder.bind(items[position])
}
inner class ItemViewHolder(val binding: LayoutItemBinding)
: RecyclerView.ViewHolder(binding.root) {
fun bind(model: ItemModel) {
// Setup view for item
}
}
}
【问题讨论】:
-
我不确定这是否可能,但我不确定。无论如何,另一种方法是在进行验证之前尝试稍等片刻。我不确定您在创建什么但在用户输入字符时进行验证?也许等他完成,延迟验证然后检查。
-
您是否重新关注相应的编辑文本?
-
你能发布你的
RecyclerView适配器的代码吗? -
@luca_999 请检查编辑
标签: android android-recyclerview notifydatasetchanged addtextchangedlistener