Search code examples
javaandroidandroid-edittext

Predefined symbols in an EditText


I use a referral system, with codes like this : XXXX-XXXX-XXXX

How can I predefine dash in my EditText?


Solution

  • Try this code:

    EditText codeEditText = binding.codeEditText;
    final String[] tempString = {""};
    final char[][] stringArray = new char[3][0];
    codeEditText.addTextChangedListener(new TextWatcher() {
    
       public void afterTextChanged(Editable s) {}
    
       public void beforeTextChanged(CharSequence s, int start, int count,int after) {}
    
       public void onTextChanged(CharSequence s, int start, int before, int count) {
    
          if(cardNumber.getText().length()==5 ||cardNumber.getText().length()==10 ||cardNumber.getText().length()==15 ||cardNumber.getText().length()==20) {
             tempString[0] = codeEditText.getText().toString() + "-";
             char c = tempString[0].charAt(tempString[0].length() - 2);
    
             if (c != '-') {
                stringArray[0] = tempString[0].toCharArray();
                stringArray[0][tempString[0].length() - 2] = stringArray[0][tempString[0].length() - 1];
                stringArray[0][tempString[0].length() - 1] = c;
    
                tempString[0] = new String(stringArray[0]);
                codeEditText.setText(tempString[0]);
                cardNumber.setSelection(tempString[0].length());
                tempString[0] = null;
             }
    
          }
    
       }
    });