Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.text.Editable;
- import android.text.TextWatcher;
- import android.widget.EditText;
- import java.text.DecimalFormat;
- import java.text.ParseException;
- public class NumberTextWatcher implements TextWatcher {
- private final DecimalFormat dfnd;
- private final EditText et;
- public NumberTextWatcher(EditText et) {
- dfnd = new DecimalFormat("#,###");
- dfnd.setMaximumFractionDigits(0);
- this.et = et;
- }
- @SuppressWarnings("unused")
- private static final String TAG = "NumberTextWatcher";
- public void afterTextChanged(Editable s) {
- et.removeTextChangedListener(this);
- try {
- int inilen, endlen;
- inilen = et.getText().length();
- String v = s.toString().replace(".", "");
- Number n = dfnd.parse(v);
- int cp = et.getSelectionStart();
- et.setText(dfnd.format(n).replace(",", "."));
- endlen = et.getText().length();
- int sel = (cp + (endlen - inilen));
- if (sel > 0 && sel <= et.getText().length()) {
- et.setSelection(sel);
- } else {
- // place cursor at the end?
- et.setSelection(et.getText().length() - 1);
- }
- } catch (NumberFormatException | ParseException nfe) {
- // do nothing?
- nfe.printStackTrace();
- }
- et.addTextChangedListener(this);
- }
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement