Android 如何获得不同的号码选择器号码并进行合计

Android 如何获得不同的号码选择器号码并进行合计,android,android-number-picker,Android,Android Number Picker,我已经创建了3个数字选择器,计划在选中时添加/合计这些数字选择器,但现在我面临一些字符串数组问题 输入:这里是我选择的编号frm编号选择器20、30、10 产出:103020 但我需要它是总计10+20+30=60,而不是像103020那样显示输出 NumberPicker.OnValueChangeListener onValueChanged = new NumberPicker.OnValueChangeListener() { @Override

我已经创建了3个数字选择器,计划在选中时添加/合计这些数字选择器,但现在我面临一些字符串数组问题

输入:这里是我选择的编号frm编号选择器20、30、10

产出:103020

但我需要它是总计10+20+30=60,而不是像103020那样显示输出

   NumberPicker.OnValueChangeListener onValueChanged = new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                NumberPicker[] nps = new NumberPicker[3];
                nps[0] = (NumberPicker) findViewById(R.id.carbPercentage);
                nps[1] = (NumberPicker) findViewById(R.id.proteinPercentage);
                nps[2] = (NumberPicker) findViewById(R.id.fatPercentage);

                String temp = "";
                for (int i = 0; i < 3; i++) {
                    String[] values = nps[i].getDisplayedValues();
                    temp = values[nps[i].getValue()] + temp;
                }

                TextView tv = (TextView) findViewById(R.id.totalPercentage);
                tv.setText(temp);
            }
        };

        NumberPicker[] nps = new NumberPicker[3];
        nps[0] = (NumberPicker) findViewById(R.id.carbPercentage);
        nps[1] = (NumberPicker) findViewById(R.id.proteinPercentage);
        nps[2] = (NumberPicker) findViewById(R.id.fatPercentage);

        String[] values = new String[21];
        for (int i = 0; i < values.length; i++) {
            values[i] = Integer.toString(i * 5);
        }

        for (int i = 0; i < 3; i++) {
            nps[i].setMaxValue(values.length - 1);
            nps[i].setMinValue(0);
            nps[i].setDisplayedValues(values);
            nps[i].setOnValueChangedListener(onValueChanged);
        }
NumberPicker.OnValueChangeListener onValueChanged=新的NumberPicker.OnValueChangeListener(){
@凌驾
public void onValueChange(NumberPicker选择器、int-oldVal、int-newVal){
NumberPicker[]nps=新的NumberPicker[3];
nps[0]=(NumberPicker)findViewById(R.id.carbPercentage);
nps[1]=(NumberPicker)findViewById(R.id.proteinPercentage);
nps[2]=(NumberPicker)findViewById(R.id.fatPercentage);
字符串temp=“”;
对于(int i=0;i<3;i++){
字符串[]值=nps[i]。getDisplayedValues();
温度=数值[nps[i].getValue()]+温度;
}
TextView tv=(TextView)findViewById(R.id.totalPercentage);
tv.setText(temp);
}
};
NumberPicker[]nps=新的NumberPicker[3];
nps[0]=(NumberPicker)findViewById(R.id.carbPercentage);
nps[1]=(NumberPicker)findViewById(R.id.proteinPercentage);
nps[2]=(NumberPicker)findViewById(R.id.fatPercentage);
字符串[]值=新字符串[21];
对于(int i=0;i
我不明白您为什么试图通过字符串串联'temp'变量来串联NumberPicker值。相反,请使用以下命令:

在数字选择器的onValueChange事件处理程序中

long totalSum = 0L;

for(int i=0; i<3; i++)
      totalSum + = nps[i].getValue(); // getValue() method returns int

TextView tv = (TextView) findViewById(R.id.totalPercentage);
tv.setText(String.valueOf(totalSum));
long totalSum=0L;

对于(int i=0;i请参见下文
@oathkeeper
的ans,该值为真。 让我来描述一件最好的事情

+”它以不同的方式工作

(String + string) always return string concate.
(String + int/long) always return string concate.
(int/long + string) always return string concate.
(int/long + int/long) always return int/long (Mathamatical opration).

JAVA的简单基本概念。

您只需将
nps[i].getDisplayedValues()
更改为
nps[i].getValue()
,它返回一个
int
值。然后将这些
int
值添加到一起,然后显示它

NumberPicker.OnValueChangeListener onValueChanged=新的NumberPicker.OnValueChangeListener(){
@凌驾
public void onValueChange(NumberPicker选择器、int-oldVal、int-newVal){
NumberPicker[]nps=新的NumberPicker[3];
nps[0]=(NumberPicker)findViewById(R.id.carbPercentage);
nps[1]=(NumberPicker)findViewById(R.id.proteinPercentage);
nps[2]=(NumberPicker)findViewById(R.id.fatPercentage);
//在这里换车!
整数和=0;
//字符串temp=“”;
对于(int i=0;i<3;i++){
字符串[]值=nps[i]。getDisplayedValues();
sum+=Integer.parseInt(值[nps[i].getValue()]);
//温度=数值[nps[i].getValue()]+温度;
}
TextView tv=(TextView)findViewById(R.id.totalPercentage);
tv.setText(String.valueOf(sum));
}
};
NumberPicker[]nps=新的NumberPicker[3];
nps[0]=(NumberPicker)findViewById(R.id.carbPercentage);
nps[1]=(NumberPicker)findViewById(R.id.proteinPercentage);
nps[2]=(NumberPicker)findViewById(R.id.fatPercentage);
字符串[]值=新字符串[21];
对于(int i=0;i}
感谢您的回答@oathkeeper,但它添加了数字滚动的步骤,例如:当第一个数字选择器2次显示2,第二个数字选择器3次显示2+3=5次,但我需要的是数字选择器内的值要相加,例如:第一个np i scoll为4,第二个为1,第三个为5,它将显示4+1+5=10,这是里面的值不是步骤那么如何呢?谢谢你的回答Wesley但是它加上了数字的步骤我滚动例如:当第一个数字选取器2次显示2,第二个数字选取器3次显示2+3=5次总计,但我需要的是数字选取器里面的值要加起来例如:第一个np我滚动到4,第二个到1,第三个到5,它将l show 4+1+5=10,里面的值不是step那么如何?@WgSam我做了一些更改,请再试一次Hank Wesley解决了这个问题!昨天晚上我得到了与你show me相同的chg代码,但我在scoll时不断跳出,因为我忘记了放这个字符串。valueOf(sum)在我的setText中,但是谢谢你的帮助我可以得到你的电子邮件地址吗,下次如果遇到问题可以向你寻求帮助,请帮我看看这里的链接