2

3 つの数値ピッカーを作成しました。選択したときにそれらの数値ピッカーを追加/合計する予定ですが、文字列配列の問題に直面しています。

入力:ここでは、番号ピッカーから選択した番号 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);
        }
4

3 に答える 3

0

'temp' variable の文字列連結によって 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));

これが役立つかどうか教えてください。

于 2015-12-01T05:04:59.407 に答える
0

以下の回答を参照してください@oathkeeper 。最高のことを1つ説明させてください。

" + " さまざまな方法で動作します。

(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 のシンプルで基本的な概念。

于 2015-12-01T05:18:39.207 に答える