1

我有 2 个号码选择器,一个用于数小时,另一个用于数分钟。我希望可用选项的范围从 1 小时 30 分钟到 5 小时 58 分钟。一个数字选择器用于小时数,另一个用于分钟数

当 Hours numnerpicker 为 1 时,我想将另一个数字选择器限制为 30 到 58 之间的值(以 2 为增量)。到目前为止我尝试过的东西不起作用,分钟数选择器只是变为零并且不动。

// Create the array of numbers that will populate the numberpicker
    final String[] hours = {"1","2","3","4","5"};
    final String[] mins = new String[30];

    for(int i=0; i < 30; i++) {
        mins[i] = Integer.toString(i*2);
    }



    //set up number picker
    final NumberPicker nmHours = (NumberPicker) view.findViewById(R.id.hours);
    nmHours.setMaxValue(5);
    nmHours.setMinValue(1);
    nmHours.setWrapSelectorWheel(true);
    nmHours.setDisplayedValues(hours);
    //This gets the value stored in my global singleton 
    nmHours.setValue(Integer.parseInt(MethodLab.get(getActivity()).getSetup().getPealTime().substring(0,1)));
    nmHours.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);

    final NumberPicker nmMins = (NumberPicker) view.findViewById(R.id.minutes);
    nmMins.setMaxValue(30);
    nmMins.setMinValue(1);
    nmMins.setWrapSelectorWheel(true);
    nmMins.setDisplayedValues(mins);
    //This gets the value stored in my global singleton 
    nmMins.setValue(Integer.parseInt(MethodLab.get(getActivity()).getSetup().getPealTime().substring(2,MethodLab.get(getActivity()).getSetup().getPealTime().length())));
    nmMins.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
    nmMins.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            // TODO Auto-generated method stub

            // TODO Auto-generated method stub
            if (nmHours.getValue() == 1){
                nmMins.setDisplayedValues(Arrays.copyOfRange(mins, 15, 30));
                nmMins.setMaxValue(30);
                nmMins.setMaxValue(15);
                nmMins.setValue(30);
            }
            else{
                nmMins.setDisplayedValues(mins);
                nmMins.setMaxValue(30);
                nmMins.setMinValue(1);
            }   
        }
    });
4

0 回答 0