运行时TextWatcher控件

时间:2014-08-22 19:52:54

标签: android textwatcher

我有4个edittext,我想实现一个带控件值的TextWatcher。

Et1Burro.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable value) {
              // you can call or do what you want with your EditText here
                Dvalue = GetEditValue(value);
                double et4tot = 0, et2fibra = 0, et3zucc = 0;
                // et1burro + et2fibra = et4tot
                // et1burro + et2fibra + et3zucc = 100
                try {
                    et4tot = Double.parseDouble(Et4Tot.getText().toString());
                } catch (NumberFormatException e) { e.printStackTrace(); }

                try {
                    et2fibra = Double.parseDouble(Et2Fibra.getText().toString()); 
                } catch (NumberFormatException e) { e.printStackTrace(); }

                try {   
                    et3zucc = Double.parseDouble(Et3Zucc.getText().toString());
                } catch (NumberFormatException e) { e.printStackTrace(); }

                if ((Dvalue < 1) || (Dvalue > 100) || ((Dvalue + et2fibra) != et4tot ) || ((Dvalue + et2fibra + et3zucc) != 100 ))
                {
                //segnala errore
                    Et1Burro.setTextColor(getActivity().getBaseContext().getResources().getColor(R.color.Red)); 
                }else
                    Et1Burro.setTextColor(getActivity().getBaseContext().getResources().getColor(R.color.Black));
            }

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

如果范围编号错误,我想要一个红色数字,如果是正确的话,我想有一个黑色数字。

我认为最好是实现AsynckTask来控制数字吗?

例如4 edittext值是: A,B,C,d

正确值的关系是:

A+B = D
A+B+C = 100
C = 100 - D

正确的示例值是A = 35,B = 35,C = 30,D = 70 但是如果在第一次编辑(A)中用户插入第一个字符ex 35,则程序以RED值响应,因为另一个值为0,并且当用户使用值35,35,30,70编译所有edittext时黑色的价值是最后一个。 我希望明白......

1 个答案:

答案 0 :(得分:1)

因为您只更新一个编辑文本的颜色

我建议的是,

  • 为所有编辑文本
  • 设置默认颜色为红色
  • 为“控制值”逻辑编写一个函数。仅当所有编辑文本中都有值时才调用此函数。
  • 如果输入的值正在传递您的控制逻辑,则将所有编辑框的颜色更新为黑色。否则你必须将它设置为RED