0

NumberPicker を使用して文字列の配列を表示しようとしていますが、現在の文字列の値を取得しようとすると、値は配列内の文字列の整数インデックス値であり、これがデフォルトの応答です。

NumberPicker.Formatter を使用して、整数のインデックス値ではなく、実際の文字列を値として取得しようとしています。これを実装しましたが、呼び出されていないようです。誰かがこれがなぜなのか、それを修正するために何ができるのか教えてください. 前もって感謝します。

コードは次のとおりです。

final NumberPicker npUnits = (NumberPicker) numberPickerView.findViewById(R.id.numberPicker2);

            npUnits.setMinValue(1);
            npUnits.setDisplayedValues(tableUnitsArray);
            npUnits.setMaxValue(tableUnitsArray.length);
            npUnits.setFormatter(new NumberPicker.Formatter() 
            {
                @Override
                public String format(int value) 
                {
                    ArrayList<String> stringArrayList = (ArrayList<String>) Arrays.asList(tableUnitsArray);
                    String defaultUnits = stringArrayList.get(value);
                    System.out.println("Value formatted result: " + defaultUnits);

                    return defaultUnits;
                }
            });
            npUnits.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
4

3 に答える 3

0

NumberPicker指定した最小値と最大値に基づいて値を選択できます。電話する必要はありませんsetDisplayedValues()。指定した配列を一連の代替値としてNumberPicker使用すると、フォーマッタが無視されます。Stringへの呼び出しを削除してみてくださいsetDisplayedValues()

あなたの値NumberPickerがそれほど単純ではない場合 (つまり、最小値から最大値まで 1 ずつ増加しない場合)、フォーマッターで値を変換して目的の数値を取得できます。

于 2014-03-18T14:19:40.283 に答える