0

I'm very very new to android dev, but I really enjoy it :) I am wanting to make a calculator app for a game I play to work out how long it'll take to get from level a to level b using the various methods. I'm doing pretty good with it so far, but now have encountered this error which is reallllly bugging me.
I want to turn my text color to red if they input a number thats lower than the required experience to use ingame. For example, mahogany logs require 400000xp to be able to use, so if they enter <400000 I want the TextView with mahogany logs to turn red. Hope I made sense haha :) currently when i enter any number they all just change red and dont change with user input :(any help would be appreciated! :) Here is a screenshot of the app interface so you can see what I mean https://puu.sh/xdRfZ/a4651025d0.png

numspace1.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            Double numb1 = Double.parseDouble(numspace1.getText().toString());
            if (numb1 >= 6517253 && numb1 <= 10692628) {
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 5346332 && numb1 <= 6517252) {
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 3972294 && numb1 <= 5346331) {
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 3258594 && numb1 <= 3972293) {
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 2421087 && numb1 <= 3258593) {
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 1475581 && numb1 <= 2421086) {
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 273742 && numb1 <= 1475580) {
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 123660 && numb1 <= 273741) {
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 83014 && numb1 <= 123659) {
                p6.setTextColor(Color.RED);
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 22406 && numb1 <= 83013) {
                p5.setTextColor(Color.RED);
                p6.setTextColor(Color.RED);
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 13363 && numb1 <= 22405) {
                p4.setTextColor(Color.RED);
                p5.setTextColor(Color.RED);
                p6.setTextColor(Color.RED);
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 0 && numb1 <= 13362) {
                p2.setTextColor(Color.RED);
                p3.setTextColor(Color.RED);
                p4.setTextColor(Color.RED);
                p5.setTextColor(Color.RED);
                p6.setTextColor(Color.RED);
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            }
        }
  • What is the problem? – Orkhan Alikhanov Aug 19 '17 at 04:02
  • I want to turn my text color to red if they input a number thats lower than the required experience to use ingame. For example, mahogany logs require 400000xp to be able to use, so if they enter <400000 i want the TextView with mahogany logs to turn red. Hope I made sense haha :) currently when i enter any number they all just change red and dont change with user input :( – Ely Jenkins Aug 19 '17 at 04:33
  • here is a screenshot of the app interface so you can see what i currently have https://puu.sh/xdRfZ/a4651025d0.png – Ely Jenkins Aug 19 '17 at 05:02

3 Answers3

0

Try This One:

 numspace1.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) {

        }

        @Override
        public void afterTextChanged(Editable s) {
        if(!s.toString().equals("")) {
           checkValue(s.toString());
        }

        }
    });


}

private void checkValue(String s) {
    Double numb1 = Double.parseDouble(s);
    if (numb1 >= 6517253 && numb1 <= 10692628) {
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 5346332 && numb1 <= 6517252) {
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 3972294 && numb1 <= 5346331) {
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 3258594 && numb1 <= 3972293) {
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 2421087 && numb1 <= 3258593) {
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 1475581 && numb1 <= 2421086) {
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 273742 && numb1 <= 1475580) {
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 123660 && numb1 <= 273741) {
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 83014 && numb1 <= 123659) {
        p6.setTextColor(Color.RED);
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 22406 && numb1 <= 83013) {
        p5.setTextColor(Color.RED);
        p6.setTextColor(Color.RED);
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 13363 && numb1 <= 22405) {
        p4.setTextColor(Color.RED);
        p5.setTextColor(Color.RED);
        p6.setTextColor(Color.RED);
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 0 && numb1 <= 13362) {
        p2.setTextColor(Color.RED);
        p3.setTextColor(Color.RED);
        p4.setTextColor(Color.RED);
        p5.setTextColor(Color.RED);
        p6.setTextColor(Color.RED);
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    }
}
Mahesh Vayak
  • 1,016
  • 10
  • 24
0

new Answer: well.. afterTextChanged is triggered in each character you put in.. e.g. if you put 1000 -> it will call 4 times.. 1 10 100 1000

my suggestion is: option 1: setting the default color in the beginning of afterTextChanged

option 2: trigger the setting of color when the user finishes with the input (leaving the edittext or pressing done in the keyboard).. check this link for details: android EditText - finished typing event

old Answer: Editable is implementing CharSequence which means you can use the toString method from char sequence:

"Returns a string containing the characters in this sequence in the same order as this sequence."

try this one:

numspace1.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void afterTextChanged(Editable s) {
        Double numb1 = Double.parseDouble(s.toString());
        if (numb1 >= 6517253 && numb1 <= 10692628) {
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 5346332 && numb1 <= 6517252) {
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 3972294 && numb1 <= 5346331) {
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 3258594 && numb1 <= 3972293) {
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 2421087 && numb1 <= 3258593) {
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 1475581 && numb1 <= 2421086) {
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 273742 && numb1 <= 1475580) {
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 123660 && numb1 <= 273741) {
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 83014 && numb1 <= 123659) {
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 22406 && numb1 <= 83013) {
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 13363 && numb1 <= 22405) {
            p4.setTextColor(Color.RED);
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 0 && numb1 <= 13362) {
            p2.setTextColor(Color.RED);
            p3.setTextColor(Color.RED);
            p4.setTextColor(Color.RED);
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        }
    }
  • tried this and it gave the same result I currently have, it changes all the colors as soon as the first number is inputted, where as I want it to update depending on what the user inputs, changing text colors :) here is a screenshot of the app interface to see what i mean :) https://puu.sh/xdRfZ/a4651025d0.png – Ely Jenkins Aug 19 '17 at 04:59
0
You can try the following :   

  private void checkValue(String s) {
        Double numb1 = Double.parseDouble(s);
        if (numb1 >= 6517253 && numb1 <= 10692628) {
            p15.setTextColor(Color.RED);
 // set other text color black (apply it for all other textviews .)
 p2.setTextColor(Color.RED);
            p3.setTextColor(Color.BLACK);
            p4.setTextColor(Color.BLACK);
            p5.setTextColor(Color.BLACK);
            p6.setTextColor(Color.BLACK);
            p7.setTextColor(Color.BLACK);
            p9.setTextColor(Color.BLACK);
            p10.setTextColor(Color.BLACK);
            p11.setTextColor(Color.BLACK);
            p12.setTextColor(Color.BLACK);
            p13.setTextColor(Color.BLACK);
            p14.setTextColor(Color.BLACK);


        } else if (numb1 >= 5346332 && numb1 <= 6517252) {
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 3972294 && numb1 <= 5346331) {
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 3258594 && numb1 <= 3972293) {
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 2421087 && numb1 <= 3258593) {
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 1475581 && numb1 <= 2421086) {
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 273742 && numb1 <= 1475580) {
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 123660 && numb1 <= 273741) {
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 83014 && numb1 <= 123659) {
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 22406 && numb1 <= 83013) {
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 13363 && numb1 <= 22405) {
            p4.setTextColor(Color.RED);
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 0 && numb1 <= 13362) {
            p2.setTextColor(Color.RED);
            p3.setTextColor(Color.RED);
            p4.setTextColor(Color.RED);
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        }
    }

As you are new to Android , I recommend you to study ListView for this .

WannaBeGeek
  • 973
  • 13
  • 30