-1

I'm learning Android. I have a edittext to input money, and if I enter input number as 1000, the result must be 1.000, and if I enter input as 1000000, the result must be 1.000.000.

while i'm typing, every 3 characters from the last to beginning must have a ".".

Samane
  • 500
  • 7
  • 23
kaka
  • 1

3 Answers3

1

You can use InputFilter

public class CurrencyFormat implements InputFilter {

    Pattern mPattern = Pattern.compile("(0|[1-9]+[0-9]*)?(\\.[0-9]{0,2})?");

    @Override
    public CharSequence filter(CharSequence source, int start, int end,
            Spanned dest, int dstart, int dend) {

        String result = 
                dest.subSequence(0, dstart)
                + source.toString() 
                + dest.subSequence(dend, dest.length());

        Matcher matcher = mPattern.matcher(result);

        if (!matcher.matches()) return dest.subSequence(dstart, dend);

        return null;
    }
}

You can set filters like:

editText.setFilters(new InputFilter[] {new CurrencyFormat()});

Accept it, if you find this useful.

Rahul Parihar
  • 640
  • 7
  • 16
0

like this

    public class CurrencyFormatInputFilter implements InputFilter {

    Pattern mPattern = Pattern.compile("(0|[1-9]+[0-9]*)?(\\.[0-9]{0,2})?");

    @Override
    public CharSequence filter(
            CharSequence source,
            int start,
            int end,
            Spanned dest,
            int dstart,
            int dend) {

        String result = 
                dest.subSequence(0, dstart)
                + source.toString() 
                + dest.subSequence(dend, dest.length());

        Matcher matcher = mPattern.matcher(result);

        if (!matcher.matches()) return dest.subSequence(dstart, dend);

        return null;
    }

}
Karim Michel
  • 23
  • 1
  • 6
0
String.format("%,d",currencyInteger);
Amir
  • 1,250
  • 18
  • 22