根据答案显示TextView文本

时间:2018-02-16 20:31:47

标签: android if-statement settext android-textwatcher

我对这种事情很陌生,我正在努力教自己,但却被困在这里。我正在写一个应用程序,它将计算所需的电池大小。计算器方面我已经完成了它并且它正在工作但是我想添加一个功能,当显示答案时,它会告诉你所需的电池所需的部件号。我试图自己解决这个问题并且悲惨地失败所以我希望有人能够指出我正确的方向

电池计算器的答案显示在ahresult中。我想要的是battreq显示正确尺寸电池所需的部件号。例如,如果计算器显示需要2.43Ah电池,battreq将显示"需要3.2ah电池"因为这是下一个可用的尺寸。

ahresult = (TextView) findViewById(R.id.ahresult);

        battreq.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Integer.parseInt(ahresult.getText().toString());
                if (ahresult.equals(>= "0.00" && <=  "1.20")){
                    battreq.setText("A 1.2Ah battery is required");
                }
                else if (ahresult.equals (>= "1.21 && <= 2.10")){
                    battreq.setText("A 2.1Ah battery is required");
                }
                else if (ahresult.equals (>= "2.11 && <= 3.20")){
                    battreq.setText("A 3.2Ah battery is required");
                }
              // so on and so on with different battery sizes
            }

这是我(差)努力去做,但我得到了非法的表达。

有人可以指导我朝正确的方向发展吗?

编辑:尽管有这方面的帮助,似乎仍然存在问题。以下是更新的代码。我有什么不对吗?

ahresult.addTextChangedListener(new TextWatcher() {

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

                double result = Double.parseDouble(ahresult.getText().toString());

                if (ahresult.equals(result >= 0.001 && result <=1.200 )) {
                    battreq.setText("1.2Ah req");

                }
                else if (ahresult.equals(result >= 1.201 && result <=2.100 )) {
                    battreq.setText("2.1Ah req");
                }
            }
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });

2 个答案:

答案 0 :(得分:1)

您需要更改此

  

battreq.addTextChangedListener(new ...

有了这个

  

ahresult.addTextChangedListener(new ...

你需要倾听ahresult的价值并改变所需的电池。

在“onTextChanged”中,“CharSequence s”参数是ahresult的文本

答案 1 :(得分:1)

首先,您应该将addTextChangedListener添加到ahresult而不是battreq

其次,您必须将已更改的文本 s 解析为 Double ,然后在所需范围内进行比较:

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

    Double result = Double.parseDouble(s.toString());

   if (ahresult.equals(result >= 0.00 &&  result <=  1.20)){
       battreq.setText("A 1.2Ah battery is required");
   }
   else if (ahresult.equals (result>= 1.21 && result <= 2.10)){
       battreq.setText("A 2.1Ah battery is required");
   }
   else if (ahresult.equals (result>= 2.11 && result <= 3.20)){
       battreq.setText("A 3.2Ah battery is required");
   }
   // so on and so on with different battery sizes
}