如何将addTextChangedListener带到动态Edittexts

时间:2016-03-05 05:32:06

标签: java android

我的代码是:这些采取自定义3 edittext比如何将adddtextChanged侦听器添加到特定的编辑文本。 如果删除剩余的两个并且如果是空白的第三个

,则最后的edittext会创建
for(int i=0;i<3;i++)
{

LinearLayout.LayoutParams lparams=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,    LinearLayout.LayoutParams.WRAP_CONTENT);


 TextInputLayout input ;
input = new TextInputLayout(this);

input.setLayoutParams(lparams);

 et = new EditText(this);
 et .setLayoutParams(lparams);
  et .setHint(item.getLabel());
   et .setMinLines(1);

  input.addView(et);
 rl_MainLayout1.addView(input);


   et.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {

                }

                @Override
                public void afterTextChanged(Editable editable) {


                    if ( et.getText().toString().trim().isEmpty()) {
                        input.setError(getString(R.string.msg_errorName));
                        requestFocus(et);

                    } else {
                        input.setErrorEnabled(false);
                    }
                }
            });
 }

2 个答案:

答案 0 :(得分:0)

添加TextChangedListener以编辑for循环中的文字。

将名为current的全局变量声明为

int current = 0;

并点击EditText

更改该变量的值
for(int i=0;i<3;i++) {
    final int val = i;
    ..
    ..
    et.addTextChangedListener(new TextWatcher(){

        public void afterTextChanged(Editable s) {
        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            current = val;
        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

    });
}

并随时随地读取此当前值。

答案 1 :(得分:0)

/ 我通过标志变量 /

解决了这个问题

/ 首先声明 /

int flag = 1;

/ on循环标志++; /

 if(flag==1)
            {
  et1=new EditText(this);
                 }
 else if(flag==2)
            {
  et2=new EditText(this);

                 }

 flag++;