版权声明:本文为博主原创文章,未经博主允许不得转载。 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);