在listview中的Android edittext失去了重点调用notifydatachanged该怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (88)

我在listview中有一些edittext。我在edittext上有一个通用的focuslistener,它通过调用notifydatachanged来更新数据模型的值以及edittext的背景,当焦点丢失时。问题是,如果其中一个edittext持有焦点,当我触摸下一个edittext时,它立即获得焦点,然后失去焦点。我怀疑这是由于notifydatachanged方法调用导致所有视图重绘,之后焦点丢失。有没有人有任何建议或解决这个问题?

提问于
用户回答回答于

它确实发生了,因为所有的视图都被重新绘制,所以表示任何用于聚焦的行的编辑文本现在是一个完全不同的对象。在适配器中设置一个变量:int currentlyFocusedRow;

在适配器的getView中:为每个编辑文本添加一个onFocusChanged侦听器,并在该编辑文本获得焦点时,设置currentFocusedRow =焦点编辑文本恰好位于的任何行。还要设置位于currentlyFocusedRow中的任何编辑文本以进行焦点对准。

用户回答回答于

使用下面的代码试试:

android:windowSoftInputMode="adjustPan"

扫码关注云+社区