2012-07-03 3 views
1

Я пытаюсь использовать набор чисел для моего NumberPicker, который состоит из (-50 -> 50), MinValue/MaxValue для NumberPicker установлены в 0/100, а затем setValue как 50 для начальной точки по умолчанию (0), любая идея, почему она правильно отображает числа, за исключением -1 -5 ... когда они не выбраны, они отображают штраф ... при выборе они отображаются как -19, -29, -39, -49, -50.NumberPicker с отрицательными и возможными значениями

Я тестировал массив int, в котором я его кормлю, и все значения в этом прекрасны.

Это фрагмент из кода, я использую для заполнения NumberPicker ...

String[] currentScoreArray = new String[100]; 
final NumberPicker currentScore = (NumberPicker) findViewById(R.id.currentScore); 
for (int i = 0; i <= 100; i++) 
    currentScoreArray[i] = Integer.toString(i - 50); 
currentScore.setMaxValue(100); 
currentScore.setMinValue(0); 
currentScore.setWrapSelectorWheel(false); 
currentScore.setDisplayedValues(currentScoreArray); 
currentScore.setValue(50); 

После разговора с баба тенором, я до сих пор не может решить эту проблему, я сделал видео YouTube вопроса и включить код и logcat в ссылках на комментарий к видео.

http://www.youtube.com/watch?v=bF39THktVY4

+0

пожалуйста, напишите код, где вы обработки и отображения выбора. – Erol

+0

Вы имеете в виду XML, который идет вместе с ним? Я не использую какой-либо код для обработки и отображения выбора, поскольку NumberPicker является классом android (я разрешаю код android делать все, что для меня). – kyau

+0

Я не могу получить несколько вещей о вашем коде. Во-первых, почему вы устанавливаете минимальные и максимальные значения в 0 и 100, если вы хотите, чтобы ваш диапазон был [-50, 50]. Во-вторых, почему бы вам не попробовать запустить цикл for от -50 до 50, а не работать с (i-50) операцией каждый раз. – Erol

ответ

1

Похоже, вам нужно реализовать свой собственный класс NumberPicker. Вы можете начать с кода здесь: http://www.quietlycoding.com/?p=5. По-видимому, он близок к тому, что использует виджет Google NumberPicker. InputFilter, установленный в объекте EditText, предотвращает отображение отрицательных чисел. Вы можете просто прокомментировать вызов setFilters в объекте EditText, и он отобразит отрицательные числа, чтобы вы начали. Копание в реализации InputFilter может предложить лучшие решения.

3

Старый вопрос, но я отправляю идею для других пользователей:

Может быть, вы могли бы использовать NumberPicker.Formatter.

Пример:

final int minValue = -50 
final int maxValue = 50 
NumberPicker numberPicker = new NumberPicker(myActivity); 
numberPicker.setMinValue(0); 
numberPicker.setMaxValue(maxValue - minValue); 
numberPicker.setValue(myCurrentValue - minValue); 
numberPicker.setFormatter(new NumberPicker.Formatter() { 
    @Override 
    public String format(int index) { 
     return Integer.toString(index - minValue); 
    } 
}); 

затем, чтобы получить обратно выбранное значение:

int myNewValue = numberPicker.getValue() + minValue 
Смежные вопросы