2019独角兽企业重金招聘Python工程师标准>>>

同事在新的项目中遇到在RecyclerView的子布局中使用EditText,在第一项输入数据滚动出可视界面后,再次回到第一项后,输入的数据没有了。我想应该是RecyclerView回收了,而数据没有显示在界面上,我看过同事的代码后,就添加了如下代码:

String leaveMessage = bean.getMessage();
if (!TextUtils.isEmpty(leaveMessage)) {holder.et_liuyan.setText(leaveMessage);
}
holder.et_liuyan.addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void afterTextChanged(Editable editable) {confirmlist.get(position).setMessage(editable.toString());}
});

但是经过测试还是不行,就在百度和Stack OverFlow上搜索,发现还是有同样的问题, 参考链接地址:在RecyclerView中使用EditText滚动后数据消失,RecyclerView 多布局,Item中使用EditText刷新问题扫坑,Android RecyclerView's EditText swaps its position after entering data and scroll down

根本原因是因为 EditText 的重新绘制!当重绘之后该回调函数没有获取到填充的数据,从而导致了数值都被置为 0 了。

这三个解决方法都是:在每次填充数据之前先移除 TextWatcher 监听器,然后为 EditText 填充数据 ,最后在为 EditText 添加 TextWatcher 监听器,代码如下所示:

if (holder.et_liuyan.getTag() instanceof TextWatcher) {holder.et_liuyan.removeTextChangedListener((TextWatcher)holder.et_liuyan.getTag() );
}
TextWatcher watcher = new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void afterTextChanged(Editable editable) {confirmlist.get(position).setMessage(editable.toString());}
};
holder.et_liuyan.addTextChangedListener(watcher);
holder.et_liuyan.setTag(watcher);

至此,问题得到解决,记录下来,以备查阅!

转载于:https://my.oschina.net/deepSprings/blog/994148

在RecyclerView的子布局中使用EditText在数据滚动后消失相关推荐

  1. jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法

    jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法 参考文章: (1)jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法 ( ...

  2. ajax 请求成功 再执行javascript,jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法...

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Objec ...

  3. 调用$.ajax不成功,jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法...

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Objec ...

  4. 第二十篇 分享在VUE中使用data-view实现数据滚动显示并可点击

    前言:在大屏项目中需要滚动展示某个列表信息,并且能够 悬浮鼠标停止滚动.可点击最后一列查看详情.鼠标移走后又正常的滚动和动态能更新新数据. 效果图: 使用方法也很简单,下面直接看下用法吧~~~ 1. ...

  5. recyclerview 软键盘_RecyclerView中解决EditText的各种异常 终极无BUG版

    一 引言 之前发布过一个RecyclerView中解决EditText各类异常的方案,但是经过最新的各种恶心操作的测试,发现依然没有完全消灭所有的异常,所以在工作之余,又翻出来捣鼓一下. 依然感谢:苏 ...

  6. android listview edittext 不能输入,android – 无法在expandable listview中输入edittext

    我正在使用包含2个不同子项的可扩展ListView.子布局包含3个EditText字段.当我展开组时,它会显示子布局,但我无法在edittext字段中键入任何文本. 我在自定义可扩展列表适配器中的代码 ...

  7. android自定义alertdialog不现实输入法,自定义的dialog中的EditText无法弹出输入法解决方案...

    1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...

  8. php页面底部信息居中,css底部如何局中?css三种居中方法

    本篇文章给大家带来的内容是关于css底部如何局中?css三种居中方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 某天组长让我改一个表格的样式,要求底部局中.当时想很简单的嘛,哼哧 ...

  9. 点击编辑框全选内容java_Android 中使用EditText 点击全选再次点击取消全选功能

    最近在开发浏览器碰到这么一个需求:点击地址栏的时候,需要全选并调出键盘,再次点击就取消全选显示光标.点击屏幕除地址栏其他位置时,键盘隐藏,隐藏光标. 大部分浏览器都是这样的逻辑,这样可以提高用户体验, ...

最新文章

  1. Linux C编程中的段错误
  2. CNCF宣布containerd毕业
  3. 使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
  4. Python 动态添加类方法
  5. node --- 使用node连接mysql
  6. 根据 sitemap 的规则[0],当前页面 [pages/index/index] 将被索引 提示
  7. 基于JAVA+Swing+MYSQL的酒店管理系统
  8. linux的vim编辑器,强大的Vim 编辑器
  9. 我转行程序员的那一年(二)
  10. 基于Python的直方图匹配
  11. ios 网速监控_iOS怎么实时显示当前的网速
  12. 龙蜥开发者说:我眼里的龙蜥社区:一个包容的大家庭 | 第 10 期
  13. gitlab mysql 配置_Gitlab安装配置及使用
  14. sipp脚本撰写(二)
  15. Linux系统Word转换PDF,文档字体乱码不显示问题解决
  16. bC技术绑定10讲②解读“bC双码关联”!
  17. sqlmap注入——POST检测点方法
  18. 股权控制权的五种设计策略
  19. BetaFlight统一硬件配置文件研读之set命令
  20. 拉普拉斯变换的物理意义是什么?

热门文章

  1. python – 在循环中创建不同的变量名
  2. 【bzoj2081】[Poi2010]Beads Hash
  3. Hibernate的DetachedCriteria使用(含Criteria)
  4. php常见的几种排序以及二分法查找
  5. C语言中的sizeof中的数组和指针
  6. 人工智能导论笔记——江湖救急版
  7. Python导入sciry包出错
  8. R语言:绘制知识图谱
  9. html语言中 加当前时间,javascript中怎么获取当前时间?
  10. pyqt label 设值时会进行加法_飞桨与PyQt的碰撞,图形化目标检测So Easy