【问题标题】:Android EditText in RecyclerViewRecyclerView中的Android EditText
【发布时间】:2021-03-02 21:52:17
【问题描述】:

我想实现一个搜索。但不幸的是,编辑文本必须在回收站视图中。我有多种类型的物品。 当用户输入一个字母时,我会刷新整个适配器,搜索是在本地完成的。这意味着键盘消失了,编辑文本失去了焦点,因为这种不断更新。 我设法修复它显示键盘并在绑定时手动聚焦编辑。

 if (item.inEditableMode) {
            edit_text.requestFocus()
            showKeyboard(edit_text)
 }

但是编辑文本的效果不如我预期的那么好。当用户快速键入或想要清除输入时会出现问题。 感谢您的帮助。

布局:

【问题讨论】:

  • 如果您包括用户界面和问题的屏幕截图/屏幕录制,那将有很大帮助
  • 为什么是edit text must be in recycler view?
  • 我已经发布了布局。它必须在回收站中,因为它必须是可滚动的

标签: android kotlin android-recyclerview android-edittext keyboard


【解决方案1】:

“不幸的是,编辑文本必须在回收站视图中” - 我敢打赌它不一定是RecyclerView 的一部分,也不是Adapter 列表项View 的一部分。更好地检查您的布局架构,而不是发布带有隐藏显示(闪烁)键盘的解决方法

此外,即使必须如此,也不要用notifyDataSetChanged() 通知整个Adapter,而是使用notifyItemChanged(...) - 通知您的项目范围,但不要用EditText 列出项目 - 它不会重新绘制,因此键盘应保持可见并保持在该字段上。这仍然不是一个好方法,你的EditText 应该与RecyclerView 分开,几乎是为了舒尔

【讨论】:

  • 我添加了一个示例布局。除了在一个适配器中之外,我不知道如何以其他方式表达。我很想编辑可滚动的文本和外部回收器。编辑文本有时在列表中,有时不在。但如果总是在第二位。
  • 好的,我解决了我的问题。当我处于编辑模式时,我会从第三个项目中通知ItemRangeChanged。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 2016-08-14
相关资源
最近更新 更多