如何使用PostTextChanged来减少textview中的数量

bis0qfac  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(342)

我正试图减少一笔固定金额 TextView 使用 aftetTextChanged . 为了实现这一点,我在framgnet中执行以下操作
textwatcher代码

editTextDiscount.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {
                Double damageCost = 0d;
                String decDE = txtDamageEstimate.getText().toString().trim();
                decDE = decDE.replace("£", "");
                Double decDeResults = Double.valueOf((String) (decDE));

                if (!TextUtils.isEmpty(editTextDiscount.getText())) {
                    damageCost = editTextDiscount.getCleanDoubleValue();
                }

                txtDiscount.setText(" "+nf.format(-damageCost));
                txtDamageEstimate.setText(nf.format(decDeResults-damageCost));
            }
        });

这是可行的,但是它减少了输入量,当我退格输入时,它不会重置为其原始量,例如,如果它是20.00,我输入00.01,它将显示19.97,如果我将其删除为0.01,它将保持19.97

kognpnkq

kognpnkq1#

textwatcher不应该以这种方式使用,它是作为观察者而不是交互者设计的。
我认为编辑完成后,您会尝试做一些事情。您应该改用focuslistener。

txtDiscount.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus)
           // here focus is lost, means edit is done, validate text here
    }

相关问题