Android Adapter中组件EditText文本变化监听 addTextChangedListener
问题背景:使用适配器显示一个列表,列表中Item中有EditText,滚动时会有EditText组件内容消失
步骤:
1. 在Adapter中,添加interface
1 2 3 4 5 6 7 8 9 10 | 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,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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,
1 2 3 | holder.etXXX.setTag(position); holder.etXXX.setText(mList. get (position).getXxx()); holder.etXXX.addTextChangedListener( new XXXEditTextWatcher(holder)); |
标签:
Android
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-06-07 nacos 注册服务正常,服务列表内没有服务