Android RecyclerView 中的 EditText
Android EditText in RecyclerView
我想执行搜索。但不幸的是,编辑文本必须在回收站视图中。我有多种类型的物品。
当用户输入一个字母时,我会刷新整个适配器,搜索是在本地完成的。这意味着键盘消失,编辑文本失去焦点,因为这种不断更新。
我设法修复它显示键盘并在绑定时手动聚焦编辑。
if (item.inEditableMode) {
edit_text.requestFocus()
showKeyboard(edit_text)
}
但是编辑文本效果不如我预期。当用户快速键入或想要清除输入时,就会出现问题。
感谢您的帮助。
布局:
“不幸的是,编辑文本必须在回收站视图中”- 我打赌它不一定是 RecyclerView
的一部分,而不是 Adapter
列表项 View
的一部分。更好地检查您的布局架构,而不是使用隐藏显示(闪烁)键盘发布的解决方法
除此之外,即使必须如此,也不要使用 notifyDataSetChanged()
通知整个 Adapter
,而是使用 notifyItemChanged(...)
- 通知项目的范围,但不通知列表项目EditText
- 它不会被重新绘制,所以键盘应该保持可见并且焦点保持在该字段上。这仍然不是一个好方法,你的 EditText
几乎应该与 RecyclerView
分开
我想执行搜索。但不幸的是,编辑文本必须在回收站视图中。我有多种类型的物品。 当用户输入一个字母时,我会刷新整个适配器,搜索是在本地完成的。这意味着键盘消失,编辑文本失去焦点,因为这种不断更新。 我设法修复它显示键盘并在绑定时手动聚焦编辑。
if (item.inEditableMode) {
edit_text.requestFocus()
showKeyboard(edit_text)
}
但是编辑文本效果不如我预期。当用户快速键入或想要清除输入时,就会出现问题。 感谢您的帮助。
布局:
“不幸的是,编辑文本必须在回收站视图中”- 我打赌它不一定是 RecyclerView
的一部分,而不是 Adapter
列表项 View
的一部分。更好地检查您的布局架构,而不是使用隐藏显示(闪烁)键盘发布的解决方法
除此之外,即使必须如此,也不要使用 notifyDataSetChanged()
通知整个 Adapter
,而是使用 notifyItemChanged(...)
- 通知项目的范围,但不通知列表项目EditText
- 它不会被重新绘制,所以键盘应该保持可见并且焦点保持在该字段上。这仍然不是一个好方法,你的 EditText
几乎应该与 RecyclerView
分开