我使用LayoutInflater
多次充气同一个视图。我想设置TextWatcher
来观察特定视图的文本更改。
当我使用我的代码然后它不工作。请帮忙。
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) { }
});
答案 0 :(得分:1)
您可以使用单个文本观察器,然后使用两个编辑文本进行注册。
TextWatcher textWatcher = new TextWatcher() {
... as you had it ...
};
totalmalestu.addTextChangedListener(textWatcher);
totalfemalestu.addTextChangedListener(textWatcher);
答案 1 :(得分:0)
你在2个地方使用相同的条件
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));
}
每次totalmalestu.getText().toString().equals("")
问题是你的情况编辑它会工作正常。
您可以在afterTextChanged(Editable editable)
而不是onTextChanged(CharSequence charSequence,int i,int i1,int i2)中编写代码
@Override
public void afterTextChanged(Editable editable) {
if (editable.toString().length()==0) {
((EditText) ((LinearLayout) ((LinearLayout) ((LinearLayout) headerLay.getChildAt(i)).getChildAt(1)).getChildAt(2)).getChildAt(1)).setText(String.valueOf(0 + Integer.valueOf(totalfemalestu.getText().toString())));
}else if (editable.toString().length()<2) {
((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);
}
}
你可以随意改变你的状况......祝你好运......