回收视图中的Android EditText
我想实现一个搜索。但不幸的是,编辑文本必须在回收器视图中。我有多种类型的物品。 当用户输入字母I刷新整个适配器时,搜索在本地完成。这意味着键盘消失,编辑文本失去焦点,因为这种不断的更新。 我设法修复了它显示键盘和焦点的编辑手动绑定回收视图中的Android EditText,android,kotlin,android-recyclerview,android-edittext,keyboard,Android,Kotlin,Android Recyclerview,Android Edittext,Keyboard,我想实现一个搜索。但不幸的是,编辑文本必须在回收器视图中。我有多种类型的物品。 当用户输入字母I刷新整个适配器时,搜索在本地完成。这意味着键盘消失,编辑文本失去焦点,因为这种不断的更新。 我设法修复了它显示键盘和焦点的编辑手动绑定 if (item.inEditableMode) { edit_text.requestFocus() showKeyboard(edit_text) } 但是编辑文本的效果并不像我想象的那么好。当用户快速输入或想
if (item.inEditableMode) {
edit_text.requestFocus()
showKeyboard(edit_text)
}
但是编辑文本的效果并不像我想象的那么好。当用户快速输入或想要清除输入时,会出现问题。
谢谢你的帮助
布局:
“不幸的是,编辑文本必须在回收器视图中”-我打赌它不必是RecyclerView
的一部分,也不必是Adapter
列表项视图的一部分。最好检查您的布局架构,而不是使用隐藏显示(闪烁)键盘发布解决方案
除此之外,即使必须这样做,也不要使用notifyDataSetChanged()
通知整个Adapter
,而是使用notifyItemChanged(…)
-通知项目的范围,但不要使用EditText
列出项目-它不会被重新绘制,所以键盘应该保持可见并将焦点保持在该字段上。但这不是一个好方法,您的EditText
应该与舒尔的RecyclerView
分开,如果您包括UI和问题的屏幕截图/屏幕记录,这将有助于解决为什么编辑文本必须在RecyclerView
中?我已经发布了布局。它必须在回收器中,因为它必须是可滚动的。我添加了一个布局示例。除了一个适配器之外,我不知道如何用其他方式来表达它。我想编辑文本滚动和外部回收。编辑文本有时在列表上,有时不在列表上。但如果总是在第二位。好的,我解决了我的问题。当我处于编辑模式时,我不会从第三项更改为NotifyItemRange:)