When we work with the currency we need to use ',' separator in appropriate places . For example 1500 as 1,500. For formatting the currency value, we can use NumberFormat Class . Also we need to add a textchange listener to that edit text. Format the value while we get a call in afterTextChanged() method in addTextChangedListener . A simple example below
mDishPrice.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) { /*** * No need to continue the function if there is nothing to * format ***/ if (s.length() == 0){ return; } /*** Now the number of digits in price is limited to 8 ***/ String value = s.toString().replaceAll(",", ""); if (value.length() > 8) { value = value.substring(0, 8); } String formattedPrice = getFormatedCurrency(value); if (!(formattedPrice.equalsIgnoreCase(s.toString()))) { /*** * The below given line will call the function recursively * and will ends at this if block condition ***/ mDishPrice.setText(formattedPrice); mDishPrice.setSelection(mDishPrice.length()); } } }); /** * * @param value not formated amount * @return Formated string of amount (##,##,##,###). */ public static String getFormatedCurrency(String value) { try { NumberFormat formatter = new DecimalFormat("##,##,##,###"); return formatter.format(Double.parseDouble(value)); } catch (Exception e) { e.printStackTrace(); } return ""; }
No comments:
Post a Comment