I m using LayoutInflater
to inflate same view multiple times. i want to set TextWatcher
to watch text change of a perticular view.
when i use my code then its not working. please help.
LayoutInflater inflater = LayoutInflater.from(UpdateUDISENext.this);
View inflatedLayout = inflater.inflate(R.layout.udiseupdateview, null, false);
headerLay.addView(inflatedLayout);
((TextView) ((LinearLayout) headerLay.getChildAt(i)).getChildAt(0)).setText("class " + classvalue);
totalmalestu = ((EditText) ((LinearLayout) ((LinearLayout) ((LinearLayout) headerLay.getChildAt(i)).getChildAt(1)).getChildAt(0)).getChildAt(1));
totalmalestu.setText(value);
totalmalestu.setTextColor(Color.parseColor("#6bb40b"));
totalfemalestu = ((EditText) ((LinearLayout) ((LinearLayout) ((LinearLayout) headerLay.getChildAt(i)).getChildAt(1)).getChildAt(1)).getChildAt(1));
totalfemalestu.setText(value2);
totalfemalestu.setTextColor(Color.parseColor("#6bb40b"));
totalstu = ((EditText) ((LinearLayout) ((LinearLayout) ((LinearLayout) headerLay.getChildAt(i)).getChildAt(1)).getChildAt(2)).getChildAt(1));
totalstu.setTextColor(Color.parseColor("#6bb40b"));
((EditText) ((LinearLayout) ((LinearLayout) ((LinearLayout) headerLay.getChildAt(i)).getChildAt(1)).getChildAt(2)).getChildAt(1)).setText(String.valueOf(Integer.valueOf(value) + Integer.valueOf(value2)));
totalmalestu.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (totalmalestu.getText().toString().equals("")) {
((EditText) ((LinearLayout) ((LinearLayout) ((LinearLayout) headerLay.getChildAt(i)).getChildAt(1)).getChildAt(2)).getChildAt(1)).setText(String.valueOf(0 + Integer.valueOf(totalfemalestu.getText().toString())));
} else if (totalfemalestu.getText().toString().equals("")) {
((EditText) ((LinearLayout) ((LinearLayout) ((LinearLayout) headerLay.getChildAt(i)).getChildAt(1)).getChildAt(2)).getChildAt(1)).setText(String.valueOf(Integer.valueOf(totalmalestu.getText().toString()) + 0));
} else {
String sum = String.valueOf(Integer.valueOf(totalmalestu.getText().toString()) + Integer.valueOf(totalfemalestu.getText().toString()));
((EditText) ((LinearLayout) ((LinearLayout) ((LinearLayout) headerLay.getChildAt(i)).getChildAt(1)).getChildAt(2)).getChildAt(1)).setText(sum);
}
}
@Override
public void afterTextChanged(Editable editable) { }
});
You use same condition in 2 place
First one will execute every time when
totalmalestu.getText().toString().equals("")
So problem is your condition edit it it will work fine.
Suggestion
You can write code in
afterTextChanged(Editable editable)
rather then onTextChanged(CharSequence charSequence, int i, int i1, int i2)You can change your condition as you want... good luck ...