Search code examples
androidandroid-edittexttextwatcher

Android parallel updating the edit text


In my activity I have three EditText fields, when ever I enter value into the any of the EditText the other two EditText fields to be updated, suppose in EditText A I entered value 4, the EditText B should have its decimal value and EditText C should have its binary value. I am trying to use the text watcher but it is somehow not working, can someone point me I right direction how can I parallel update the EditText.

edditvalue.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) {
        String qtyString = s.toString().trim();
        hexToBin(qtyString);

    }
});

Methods:

public double hextodecimal(String s){
    double r = 0;

        if(s.equals("a") || s.equals("b") || s.equals("c") ||
                s.equals("d") || s.equals("e") ||s.equals("f") )
        {   
             r = Integer.parseInt(s, 16 );
            r= (double)  r;
        }
        else
        {
            r = Integer.parseInt(s, 16 );
        }

    return r;
}

public static String hexToBin(String s) {
    String k = new BigInteger(s, 16).toString(2);
    return new BigInteger(s, 16).toString(2);
}

Solution

  • I tried your code and just added setText calls. Its printing values in EditTexts properly.

    editText1.addTextChangedListener(new TextWatcher() {
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                        int count) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            String qtyString = s.toString().trim();
            //you would need to handle your code in this manner so app doesn't crash if user hits backspace and removes all entered characters
            if(qtyString.length() > 0){
                editText2.setText(hexToBin(qtyString));
                editText3.setText(String.valueOf(hextodecimal(qtyString)));
            }
            else {
                editText2.setText("");
                editText3.setText("");
            }
        }
    });
    

    Hope this helps.

    P.S: Make sure to use inputType properly, else your app will crash if user enters character in editText1