您的位置:首页 > 移动开发 > Android开发

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

2017-12-14 13:46 826 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐