问题背景:使用适配器显示一个列表,列表中Item中有EditText,滚动时会有EditText组件内容消失

步骤:

1. 在Adapter中,添加interface

public interface OnEidtTextChangeListener {
void xxxTextChanged(CharSequence s, int start, int before, int count);
void getXxxEditedCount();
} private OnEidtTextChangeListener mOnEidtTextChangeListener; public void setOnEidtTextChangeListener(OnEidtTextChangeListener mOnEidtTextChangeListener) {
this.mOnEidtTextChangeListener = mOnEidtTextChangeListener;
}

2. 在XXXAdapter类中 实现自定义TextWatcher,

class XXXEditTextWatcher implements TextWatcher {

		private XXXAdapter.ItemViewHolder holder;
//传入对应的ViewHolder
public XXXEditTextWatcher(XXXAdapter.ItemViewHolder holder) {
this.holder = holder;
} @Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (mOnEidtTextChangeListener != null) {
mOnEidtTextChangeListener.xxxTextChanged(s, start, before, count);
}
} @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override
public void afterTextChanged(Editable editable) {
//通过ViewHolder,获取对应控件设置的tag,tag为当前的位置,即数据的position,获取适配器的数据list改变 XXX 的内容
int position = (Integer) holder.etXXX.getTag();
if (mList.size() > position) {
mList.get(position).setXXX(editable.toString());
}
// 获取当前显示的item的index
if (mList.size() > 0) {
if (mOnEidtTextChangeListener != null) {
mOnEidtTextChangeListener.getXxxEditedCount();
}
}
}
}

3. 在onBindViewHolder中,组件设定tag以便于后续获取position,

holder.etXXX.setTag(position);
holder.etXXX.setText(mList.get(position).getXxx());
holder.etXXX.addTextChangedListener(new XXXEditTextWatcher(holder));

Android Adapter中组件EditText文本变化监听 addTextChangedListener的更多相关文章

  1. Android View中的控件和监听方法...

    PS:居然三天没写博客了...今天补上...东西虽多,但是都是一些基础...代码多了一些,有人可能会这样问,粘这么多代码有毛用..其实对于一个Android的初学者来说,一个完整的代码是最容易帮助理解 ...

  2. React 函数组件中对window添加事件监听resize导致回调不能获得Hooks最新状态的问题解决思路

    React 函数组件中对window添加事件监听resize导致回调不能获得Hooks最新状态的问题解决思路 这几天在忙着把自己做的项目中的类组件转化为功能相同的函数组件,首先先贴一份该组件类组件的关 ...

  3. Android中Button的五种监听事件

    简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...

  4. Android EditText截获与监听输入事件

      Android EditText截获与监听输入事件共有2种方法: 1.第一种方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件. edittext.setOnKeyLi ...

  5. Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听

    原文:Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听 简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们 不多说,直接贴代码 public cla ...

  6. DSAPI多功能组件编程应用-HTTP监听服务端与客户端_指令版

    前面介绍了DSAPI多功能组件编程应用-HTTP监听服务端与客户端的内容,这里介绍一个适用于更高效更快速的基于HTTP监听的服务端.客户端. 在本篇,你将见到前所未有的超简化超傻瓜式的HTTP监听服务 ...

  7. vue2.x版本中Object.defineProperty对象属性监听和关联

    前言 在vue2.x版本官方文档中 深入响应式原理 https://cn.vuejs.org/v2/guide/reactivity.html一文的解释当中,Object.defineProperty ...

  8. vue中给window添加滚动监听无效的解决方案

    原文链接: 点我 页面中有这么一个需求,当页面滚动到一定高度之后,页面中的某些元素进行吸顶,固定到顶部位置,或者是滚动到一定程度进行更新数据的操作.我相信不少网友查阅过类似的资料,网友给出的解决方案, ...

  9. JavaEE开发之Spring中的事件发送与监听以及使用@Profile进行环境切换

    本篇博客我们就来聊一下Spring框架中的观察者模式的应用,即事件的发送与监听机制.之前我们已经剖析过观察者模式的具体实现,以及使用Swift3.0自定义过通知机制.所以本篇博客对于事件发送与监听的底 ...

  10. IE浏览器的脚本文本框监听事件

    一.IE8的文本框监听事件 由于在IE8所以input和propertychange都不能用,终于皇天不负有心人让我找到了这个:https://github.com/sophiebits/jquery ...

随机推荐

  1. yb课堂 订单列表开发,完结 《四十五》

    Order.vue <template> <div class="main"> <!--订单列表--> <div class=" ...

  2. Mysql的Innodb和MyISAM引擎的区别

    区别项 Innodb MyISAM  事务  支持  不支持 锁粒度  行锁,适合高并发 表锁,不适合高并发  是否默认  默认  非默认  支持外键  支持外键  不支持  适合场景  读写均衡,写 ...

  3. 硬核案例分享,一文带你拆解PHP语言体系下的容器化改造

    本文分享自华为云社区<PHP语言体系下的容器化改造,助力夺冠集团应用现代化>,作者: HuaweiCloudDeveloper. 1.摘要 本文主要介绍了PHP语言体系应用现代化改造上云的 ...

  4. 洛谷P1004

    洛谷P1004方格取数 题目大意 本题简要意思就是一个人从一个数字矩阵的左上角走到右下角,只能向下和向右走,拿完的数对应位置变成0,并且这个人要走两次,需要计算两次所拿数的最大值 Train of t ...

  5. 3.3 Y86-64的顺序实现

    将处理组织成阶段 为了实现流水线处理机制,要将指令组织成某个特殊的阶段序列,所有的指令遵循统一的序列,不同阶段放在不同硬件上进行处理.下面是对各阶段的简述. 取指(fetch):取指阶段从内存读取指令 ...

  6. oeasy教您玩转vim - 63 - # window分屏

    ​ 窗口window 回忆上次 我们这次了解了缓冲区buffer ls可以查看buffer 如下是buffer缓冲的一些flag + 有修改未保存内容 - 可修改标签关闭 = 只读缓冲区 a 活跃缓冲 ...

  7. Divide Interval 题解

    背景 太逊了,调了三次才调出来,所以写篇题解寄念.LC好睿智 题意 给你两个数 \(a,b\),现在要从 \(a\) 跑到 \(b\),每次可以将当前的 \(a\) 拆分成 \(2^n\times m ...

  8. Superviso可视化监控进程

    如果您需要同时运行多个 ThinkPHP 命令,可以在 Supervisor 中为每个命令创建一个单独的程序段.以下是示例配置,其中包含两个 ThinkPHP 命令:command1.php 和 co ...

  9. Intent 显示与隐式了解认识

    显示Intent 用于精确匹配,指定跳转目标 1.在intent构造函数中调用 Intent intent = new Intent(this,XX.class); 2.调用意图对象的setClass ...

  10. FusionAccess liteAD

    回车回车 fusion access完成 进入access网页 https://IP:8443进入web网页 输入用户名:admin:密码:IaaS@PORTAL-CLOUD8! 输入完账号密码后改密 ...