我在 ListView 中有一些编辑文本。我在edittext上有一个通用的focuslistener,它通过调用notifydatachanged更新数据模型的值以及当焦点丢失时edittext的背景。问题是,如果其中一个编辑文本保持焦点,当我触摸下一个编辑文本时,它会暂时获得焦点然后失去焦点。我怀疑这是由于 notifydatachanged 方法调用导致所有 View 被重绘,之后焦点丢失。有人对此问题有建议或解决方法吗?谢谢。
最佳答案
这确实发生了,因为所有的 View 都被重绘了,所以代表任何过去被聚焦的行的编辑文本现在是一个完全不同的对象。在适配器中设置一个变量:int currentFocusedRow;
在您的适配器的 getView 中:为每个编辑文本添加一个 onFocusChanged 监听器,当该编辑文本获得焦点时,设置 currentFocusedRow = 焦点编辑文本恰好位于的任何行。还将 currentFocusedRow 中的任何编辑文本设置为专注。
关于listview中的Android edittext失去了对调用notifydatachanged的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9527067/