数字输入找出用户愿意支付的费用

Posted

技术标签:

【中文标题】数字输入找出用户愿意支付的费用【英文标题】:Numeric input to find out what user is willing to pay 【发布时间】:2019-08-07 07:30:48 【问题描述】:

我正在构建一个 android 应用程序,用户可以在其中选择他们想为一件商品支付的金额。但我不想卖便宜货,所以最低接受金额是.20

基于我之前写过的问题(here)

if(editText.getText().toString().trim().isEmpty() || 
Integer.parseInt(editText.gettext().toString()) > 0.2 )

//Error message for example
 

我想显示货币,以便用户知道他们将以何种货币支付他们选择的金额。我找到了this 的帖子,但我不知道如何使用上面代码中的信息。

我对此并不陌生;对不起,如果这是一个愚蠢的问题。

【问题讨论】:

你试过那个库吗? github.com/BlacKCaT27/CurrencyEditText @ZarNiMyoSettWin 简单问题无需引入库 @ZarNiMyoSettWin 看起来很有希望,但不幸的是,我显然是初学者,看不到如何实现它-.- 【参考方案1】:

请添加以下类:-

class CustomRangeInputFilter implements InputFilter 
    private final double minValue;
    private final double maxValue;

    public CustomRangeInputFilter(double minVal, double maxVal) 
        this.minValue = minVal;
        this.maxValue = maxVal;
    

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dStart, int dEnd) 
        try 
            // Remove the string out of destination that is to be replaced
            String newVal = dest.toString().substring(0, dStart) + dest.toString().substring(dEnd, dest.toString().length());
            newVal = newVal.substring(0, dStart) + source.toString() + newVal.substring(dStart, newVal.length());
            double input = Double.parseDouble(newVal);

            if (isInRange(minValue, maxValue, input)) 
                return null;
            
         catch (NumberFormatException e) 
            e.printStackTrace();
        
        return "";
    

    private boolean isInRange(double a, double b, double c) 
        return b > a ? c >= a && c <= b : c >= b && c <= a;
    

并在EditText 中添加过滤器,如下代码:-

edittext.setFilters(new InputFilter[]new CustomRangeInputFilter(0f, 50f));

【讨论】:

以上是关于数字输入找出用户愿意支付的费用的主要内容,如果未能解决你的问题,请参考以下文章

寻找支付网关[关闭]

如何正确屏蔽 SEPA(IBAN 和 BIC)信息?

自定义贝宝支付的输入

Rails PayPal 连锁支付费用

找出两个字符串输入是不是是字谜,忽略空格、标点符号和数字

MD5 详解