首页 > 其他分享 >Android Adapter中组件EditText文本变化监听 addTextChangedListener

Android Adapter中组件EditText文本变化监听 addTextChangedListener

时间:2024-06-07 09:25:35浏览次数:29  
标签:holder int EditText Adapter addTextChangedListener public position mOnEidtTextCh

问题背景:使用适配器显示一个列表,列表中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));

 

标签:holder,int,EditText,Adapter,addTextChangedListener,public,position,mOnEidtTextCh
From: https://www.cnblogs.com/uoky/p/18236503

相关文章

  • adapter1.1.5不能同步数据到ES6
    问题:如果修改数据库某张表的某个字段时出现如下日志:2024-06-0415:32:18.177[pool-2-thread-1]DEBUGc.a.o.canal.client.adapter.es.core.service.ESSyncService-DML:{"data":null,"database":"aws","destination":"CANAL_GOODS","e......
  • 深入解读Prometheus Adapter:云原生监控的核心组件
    本文详述了PrometheusAdapter的部署与配置,通过三个实践案例展示其在Kubernetes环境中的应用,帮助用户实现基于自定义指标的自动扩展和跨集群统一监控。关注作者,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室......
  • dbt adapter dispatch 处理简单说明
    以前是结合使用对于adapter的dispatch有过简单说明,以下结合源码分析下内部参考处理参考处理defdispatch(self,macro_name:str,macro_namespace:Optional[str]=None,packages:Optional[List[str]]=None,#eventuallyremove......
  • lora_adapter 模型和原模型合并成一个模型
    lora部分合并到原模型参数上importtorchfrompeftimportPeftModelfromtransformersimportAutoTokenizer,AutoModelForCausalLM,LlamaTokenizerfromtransformers.generation.utilsimportGenerationConfigdefapply_lora(model_name_or_path,output_path,lor......
  • 设计模式:适配器模式(Adapter)
    设计模式:适配器模式(Adapter)设计模式:适配器模式(Adapter)模式动机模式定义模式结构时序图模式实现在单线程环境下的测试在多线程环境下的测试模式分析优缺点适用场景应用场景应用实例适配器模式和代理模式的区别模式扩展默认适配器模式(DefaultAdapterPattern)接口适配器模......
  • Scan Your Truck Using Nexiq Adapter: Simplifying Your Diagnostic Process
    Intoday'sfast-pacedworld,ensuringthesmoothfunctioningofyourtruckisessentialforavoidingdowntimeandmaintainingefficiency.Withtheadventofadvancedtechnology,diagnosingandtroubleshootingissueshasbecomemoreconvenientthanev......
  • dbt adapter 的get_relation 简单说明
    dbt的adapter.get_relation可以方便的获取存在的relcation信息,以下是一个简单说明参考实现内部处理@available.parse_nonedefget_relation(self,database:str,schema:str,identifier:str)->Optional[BaseRelation]:relations_list=self.lis......
  • ComfyUI使用基础工作流+面部adapter修复
    json{"last_node_id":13,"last_link_id":19,"nodes":[{"id":6,"type":"CLIPTextEncode","pos":[415,186],"size&qu......
  • springboot+MDCAdapter自定义starter实现日志全链路追踪
    MDCMDC(MappedDiagnosticContext,映射调试上下文)是日志系统提供的一种方便在多线程条件下记录日志的功能使用场景一个常用的场景就是Web服务器中给每个请求都分配一个独特的请求id,所有的日志都会打印这个请求id,这样一个请求下的所有日志信息都可以很方便的找到。欢迎关注个人公......
  • dbt 自定义AdapterPlugin 中dependencies 简单说明
    结合dbt-redshift的对于dependencies部分的定义以及使用简单说明下参考代码Plugin:AdapterPlugin=AdapterPlugin(adapter=RedshiftAdapter,#type:ignorecredentials=RedshiftCredentials,include_path=redshift.PACKAGE_PATH,dep......