首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当货币等于0时,用TextWatcher删除TextWatcher的值

当货币等于0时,用TextWatcher删除TextWatcher的值
EN

Stack Overflow用户
提问于 2015-10-07 14:51:31
回答 1查看 1.4K关注 0票数 0

当值等于EditText时,我试图清理R$0,00

我试图做的是使用edittext.clear();澄清文本,但没有成功,而使用valor.removeTextChangedListener(new Ferramentas.EditValor(valor));也没有改变任何事情,那么我怎么做呢?

代码语言:javascript
复制
public static class EditValor implements TextWatcher {

        private String current = "";
        private EditText valor;


        public EditValor(EditText text){
            this.valor = text;
        }

        @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) {
            if (!s.toString().equals(current)) {

                current = valorMoeda(s.toString());
                valor.setText(valorMoeda(s.toString()));
                valor.setSelection(valorMoeda(s.toString()).length());
            }

        }
    }

ValorMoeda:

代码语言:javascript
复制
public static String valorMoeda(String s) {


        String replaceable = String.format("[%s,.\\s]", NumberFormat.getCurrencyInstance().getCurrency().getSymbol());
        String cleanString = s.replaceAll(replaceable, "");

        double parsed;
        try {
            parsed = Double.parseDouble(cleanString);
        } catch (NumberFormatException e) {
            parsed = 0.00;
        }
        String formatted = NumberFormat.getCurrencyInstance().format((parsed / 100));


        return formatted;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 20:11:31

您可以使用afterTextChanged()方法清除文本,例如:

代码语言:javascript
复制
 yourEditText.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) {

          if("R$0,00".equals(s.toString())){
             yourEditText.setText(""); // or yourEditText.getText().clear();
          }

        }

});

更新

试试下面的代码:

代码语言:javascript
复制
    @Override
    public void afterTextChanged(Editable s) {

         String newString = s.toString();

         if (newString.length>0 && !newString.equals(current)) {

            String newFormattedValue = valorMoeda(s.toString());

            if("R$0,00".equals(newFormattedValue)){
               valor.setText("");
            } else {
               current = newFormattedValue;
               valor.setText(newFormattedValue);
               valor.setSelection(newFormattedValue.length());
            }
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32995529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档