列表视图中的EditText失去焦点,数据被复制到另一个记录中

时间:2015-07-09 22:09:49

标签: android android-listview android-edittext listviewitem lost-focus

我正在处理自定义listView,其中包含每个列表项中的editText。 我的listItem位于fragment,其活动已经adjustResize属性,我无法更改为adjustPan。问题是,当我点击edittext时它失去焦点,即使在获得焦点后两次三次点击,然后在滚动时该值被复制到另一个记录中并且键盘被挂起。 我正在使用

android:descendantFocusability="beforeDescendants" 

listView上。我也在我的适配器中使用ViewHolder模式。任何经过测试的链接或工作代码都非常感谢。

1 个答案:

答案 0 :(得分:0)

我最近在行中使用了EditText来处理RecyclerView的类似问题,所以可能会帮助你。

当键盘出现时,您的列表会调整大小,并且可能导致键盘出现的行不再可见。你需要滚动它并重新聚焦。

你怎么知道键盘已启动?没有优雅的方法,我通过在recyclerView上设置GlobalLayoutListener来保存它的原始大小,并监听报告的较小尺寸。搜索" android键盘监听器"并且你会找到一些代码。

  1. 当用户点击EditText时,保存行的位置。
  2. 聆听全局布局更改,以确定键盘已启动。
  3. 滚动到保存位置的行。
  4. 提供EditText焦点。 (可能在发布的Runnable中等待滚动实际发生)