java - EditText 失去对 RecyclerView 中 Scroll 的关注

标签 java android listview android-recyclerview setfocus

我有一个 RecyclerView,它的列表项是 EditText。当我滚动 RecyclerView 时,当项目离开屏幕时 EditText 失去焦点。因此,当 EditText 滚动回到屏幕上时,焦点不会停留在 EditText 上。

我希望焦点保持在同一项目上。为此,我还尝试将项目的 position 存储在焦点上,并在 onBindViewHolder 中重新分配焦点。但这会减慢滚动速度。

我也用 ListView 尝试过,但还有另一种与 focus 相关的问题。焦点跳到那里。

已在 SO 上搜索过此地段并在 Google 上搜索了很多。但总能找到像 android:focusableInTouchMode="true"android:descendantFocusability="afterDescendants" 这样不起作用的答案。

如有任何帮助,我们将不胜感激。

最佳答案

RecyclerView 的全部意义在于重用 View ,这样手机就不必一次将所有行保存在内存中,也不必不断地销毁和创建 View .当您的 EditText 离开屏幕时,手机会获取该 View ,重置其内容并将其移动到传入 View 堆栈的底部。

RecyclerView diagram

这意味着一旦您的 EditText 离开屏幕,它就不再存在。它无法保持焦点,因为它已从布局中移除。

解决此问题的唯一方法就是您提到的方法,即存储位置,检查该位置何时出现在屏幕上,然后手动恢复焦点。

关于java - EditText 失去对 RecyclerView 中 Scroll 的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45238973/

相关文章:

java - 如何检索节点列表中的属性值

java - Spring Boot Solr HighlightPage 不返回高亮信息

c# - 刷新命令在 Xamarin.Forms 选项卡式页面内的 ListView 中不起作用

java - 如何在restful服务中进行正则表达式过滤

java - 使用 java.util.Scanner 将网站数据读取到 Java 变量中

java - 如果未设置某个值,如何抛出编译时异常。

android - 发布前测试 AdMob

android - 无法将此添加到gradle中>>>编译 'com.google.android.gms:play-services:6.+'

delphi - 如何增加报表样式中 ListView 的行高?

java - 在光标更改时重新加载 ListView 动画