RecyclerView中嵌套Edittext,添加监听的问题
如图,需要在滚动列表中输入框加入监听事件
addTextChangedListener()
adapter中,因为recyclerview的复用特性,容易造成滑动时候数据混乱。
adapter中之前代码如下。
@Overridepublic void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {holder.tvSn.setText(data.get(position).getName() + "(" + data.get(position).getCodeX() + ")");// 通过tag判断当前editText是否已经设置监听,有监听的话,移除监听再给editText赋值if (holder.etNum.getTag() instanceof TextWatcher) {holder.etNum.removeTextChangedListener((TextWatcher) holder.etNum.getTag());}// 必须在判断tag后给editText赋值,否则会数据错乱if (data.get(position).scanNum == 0) {holder.etNum.setText(data.get(position).getNum() + "");} else {holder.etNum.setText(data.get(position).scanNum + "");}data.get(position).scanNum = Integer.parseInt(holder.etNum.getText().toString());holder.etNum.setSelection(holder.etNum.getText().toString().length());final TextWatcher watcher = new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {if (TextUtils.isEmpty(s.toString())) {holder.etNum.setHint("1");data.get(position).scanNum = 0;} else {if (Integer.parseInt(holder.etNum.getText().toString()) > data.get(position).getNum()) {ToastUtils.showToast("不能超过出库单中的数量");holder.etNum.setText(data.get(position).getNum() + "");}holder.etNum.setSelection(holder.etNum.getText().toString().length());data.get(position).scanNum = Integer.parseInt(holder.etNum.getText().toString());}}};holder.etNum.addTextChangedListener(watcher); holder.etNum.setTag(watcher);}
结果还是滑动出错,需要给输入框添加 获取焦点事件。
holder.etNum.setOnFocusChangeListener(new View.OnFocusChangeListener() {@Overridepublic void onFocusChange(View v, boolean hasFocus) {//只有获取到焦点时才添加监听器if (hasFocus){holder.etNum.addTextChangedListener(watcher);holder.etNum.setTag(watcher);}} });
解决问题!
RecyclerView中嵌套Edittext,添加监听的问题相关推荐
- miniui单元格点击弹框_miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题...
最近在使用miniui框架做开发,在做表格行的点击监听事件中发现了几个属性,都可以起到监听效果但是执行的结果却大有不同.好了废话不多说,直接上代码. autoload="true" ...
- RecyclerView 完美嵌套EditText
RecyclerView中item嵌套EditText,总是会出现,焦点错乱,数据错乱 主要原因在于,EditText焦点发生变化的时候,监听也在变化,数据就会不断变化 解决方法:监听焦点变化,有焦点 ...
- vue 监听map数组变化_vuex state中的数组变化监听实例
前言 首先,因为我有一个需求就是vue组件中有一组多选框,选中多选框的内容,要在另一个组件中进行视图更新,这个就设计的兄弟组件之间的通信了,兄弟组件之前通信我首先选用的vuex这个解决办法. 问题 v ...
- Android RecyclerView(九)滑动监听综述
Android RecyclerView(九)滑动监听 1 RecyclerView 的滑动监听 1.1 RecyclerView 设置滑动监听 mRecyclerView.setOnScrollLi ...
- onTextChanged参数解释及实现EditText字数监听
http://www.picksomething.cn/?p=34 由于最近做项目要检测EditText中输入的字数长度,从而接触到了Android中EditText的监听接口,TextWatcher ...
- Unity编辑器扩展——在Editor下动态添加监听事件
对于Unity下例如按钮这种我们可以为它的监听事件手动进行赋值 如果需要通过编辑器扩展来动态为这些监听事件赋值应该如何去实现呢? 首先需要确认的是这些监听事件必须要符合一定的规则才能添加上: 1.必须 ...
- JComboBox 的下拉按钮添加监听
JComboBox 的下拉按钮添加监听 1.问题描述 2.需求分析 3.代码示例 4.结果演示 系统:Win10 JDK:1.8.0_333 IDEA:2020.3.4 1.问题描述 在使用一个 JC ...
- Android 开发中的View事件监听机制
在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...
- java实现分发_关于JAVA中事件分发和监听机制实现的代码实例
[实例简介] 关于JAVA中事件分发和监听机制实现的代码实例,绝对实用代码,有说明. [实例截图] [核心代码] JavaEventDispatch ├── bin │ └── com │ └ ...
最新文章
- MVC Razor:自定义Helper方法
- pytorch 矩阵相乘_深入浅出PyTorch(算子篇)
- php 去除字符前空格,php中删除字符串前导空格的函数是什么?
- 早教机器人刷固件_机器人线刷包_机器人刷机包_机器人固件包_机器人救砖包 - 线刷宝ROM中心...
- pythonos模块_python的io模块和os模块有什么区别
- CPU指令系统寻址方式
- 监控导致设备cpu使用率高的原因
- 软件评测师考试介绍及经验分享
- mysql海量数据查询/处理
- AI人机对战五子棋游戏【Python(pygame)+AI】并实现软件输出
- 2014版C 语言程序设计基础,清华大学出版社-图书详情-《C/C++程序设计基础与实践教程》...
- Python网络爬虫《九》
- Samy 蠕虫代码
- 设计 - 收藏集 - 掘金
- Mac移动硬盘分区无法装载
- 厦大2021级期末上机考试
- 【Lilishop商城】No3-3.模块详细设计,会员信息(会员基本信息)、店铺设置(店铺信息、配送模板)的详细设计
- 离群点(孤立点、异常值)检测方法
- Java人民币小写转大写字符串
- 李国庆是如何被“踢出”当当的?
热门文章
- 构建一个类book,其中含有2个私有数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为1~5,将price初始化为qu的10倍。
- 学习存储技术的5个阶段
- windows10开始键失效
- Hyperion Research:2021年量子计算市场收入已达4.9亿美元
- 【STM32】STM32之DRV8834电机驱动(IO方式)
- 学习Python的代码记录
- 论文解读:《基于BERT和二维卷积神经网络的DNA增强子序列识别transformer结构》
- 已解决 java.sql.SQLException: 列名无效
- OJ 1199 堆积木
- MySQL的四种事务隔离级别