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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/JustWantToFly/article/details/78801747

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);




猜你喜欢

转载自blog.csdn.net/JustWantToFly/article/details/78801747