【问题标题】:Calling onValueChange(NumberPicker) programmatically on Android在 Android 上以编程方式调用 onValueChange(NumberPicker)
【发布时间】:2016-04-14 09:43:02
【问题描述】:

在NumberPicker中做setValue后可以触发onValueChange吗?

valuePicker = (NumberPicker) findViewById(R.id.valorDimNumberPicker);
    valuePicker.setMinValue(1);
    valuePicker.setMaxValue(10);

    valuePicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            //change the world
        }
    });

 valuePicker.setValue(2);

在valuePicker.setValue(2)之后,我想自动执行onValueChange方法下的代码(改变世界)。

【问题讨论】:

    标签: android listener numberpicker


    【解决方案1】:

    在设置numberpicker 值后在onclick() 内重复包含相同的指令 在NumberPickeronValueChange()

    类似这样的:

        final NumberPicker np = (NumberPicker)getActivity().findViewById(R.id.b_num_pick);
        if (np != null) {
            np.setMinValue(1);
            int maxValue =nmax;
            np.setMaxValue(maxValue);
            np.setWrapSelectorWheel(false);
            np.setValue(1);
            np.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
                @Override
                public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
    
                     //do something;
                }
            });
        }
    
        Button increment_ = (Button) getActivity().findViewById(R.id.b_increment);
        increment_ .setOnClickListener(new NumberPicker.OnClickListener() {
            @Override
            public void onClick(View v) {
                int oldVal,newVal;
                oldVal=np.getValue();
                newVal=oldVal+1;
                if(newVal>nmax)newVal=1;
                np.setValue(newVal);
    
                //do something;
            }
        });
    

    对我有用。

    【讨论】:

      【解决方案2】:

      这是一个例子!!!

          valuePicker.setMinValue(1);
          valuePicker.setMaxValue(10);
          valuePicker.setWrapSelectorWheel(true);
          valuePicker.setValue(2);
      
          valuePicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
          @Override
          public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
              //change the world
              if(newVal==3){
                      picker.setValue(3);
                  }
          }
      });
      

      【讨论】:

      • 感谢您的回答。我希望它在每次我在代码中执行 setValue() 时自动执行 onValueChange,例如,当我单击按钮时。
      猜你喜欢
      • 2013-04-05
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2011-06-04
      相关资源
      最近更新 更多