Android开发学习笔记:为动态添加的EditText控件绑定值改变监听事件

本文介绍如何在Android应用中为EditText控件添加值改变监听器,并展示了如何通过布局管理器LinearLayout来组织这些控件,包括设置样式、响应事件及与其他控件的交互。

LinearLayout LP=new LinearLayout(context);
final EditText editText=new EditText(context);
//editText.setHeight(47);
editText.setId(i);
Log.i("当前添加的文本框ID:",String.valueOf(editText.getId()));
editText.setHint(R.string.txthint);
editText.setBackgroundResource(R.drawable.table_shape2);//设置自定义样式(使用的是drawable文件夹中的xml文件)

/*设置EditText组件值改变监听事件*/
editText.addTextChangedListener(new TextWatcher() {
	@Override
	public void beforeTextChanged(CharSequence s, int start, int count, int after) {
		//Log.i("文本输入框值改变事件:",s.toString());
	}

	/**
	 *值改变事件
	 * @param s       文本框输入的值
	 * @param start   输入的起始位置(索引)
	 * @param before
	 * @param count
	 */
	@Override
	public void onTextChanged(CharSequence s, int start, int before, int count) {

		//从内部类中访问本地变量editText; 需要被声明为最终类型(用final修饰)
		int editTxtId= editText.getId();
		LinearLayout editTextParent= (LinearLayout) editText.getParent();//获取当前编辑的文本输入框的父控件
		/*
		* 获取当前文本编辑框所在的行对象(由于文本编辑框外嵌套了一个LinearLayout控件
		* 因此需要先获取文本边框的父控件)*/
		TableRow tr= (TableRow) editTextParent.getParent();
		Log.i("当前编辑行索引:",String.valueOf(tr.getId()));
		//设置第一列中CheckBox的状态为选中状态(注意布局时CheckBox外层嵌套一个LinearLayout组件)
		((CheckBox)((LinearLayout)tr.getChildAt(0)).getChildAt(0)).setChecked(true);
	}

	@Override
	public void afterTextChanged(Editable s) {
	   // Log.i("文本输入框值改变事件:",s.toString());
	}
});
LP.setBackgroundResource(R.drawable.table_shape);
LP.addView(editText);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值