【问题标题】:Set default value for number in NumberPicker在 NumberPicker 中设置数字的默认值
【发布时间】:2013-06-24 06:02:47
【问题描述】:

我试图用数字选择器做一些简单的数学运算,这就是基本的字符串操作。只是有麻烦在下面的代码中找到一个开始。我有几个数字选择器,每个数字选择器对每个间隔都有一个预定值。

NumberPicker np - adds 25 to each individual number. 1 = 25, 2 = 50, etc

NumberPicker np2 - adds 100 to each individual number. 1 = 100, 2 = 200, etc

现在我有一个主要的 TextView,我必须显示这些数字选择器值的当前输出,并在其中添加“权重”并显示加起来的数字。

如果我的问题没有我试图写的那么清楚,我深表歉意,我只是很难找到好的资源来帮助我弄清楚如何以简单的方式做到这一点。

我试图在下面的代码中,获取我的 textview 的当前值,然后获取 numberpicker 的值,然后我需要代码来添加数字 25,所以 1 = +25,然后将其设置为我的 textview。

    String current_weight = current_weight_view.getText().toString();
String newvalue= getText(newVal).toString(); 
    res=Integer.parseInt(current_weight)+Integer.parseInt(newvalue);
current_weight_view.setText(Integer.toString(res));

--

public class MainActivity extends Activity {
  private TextView current_weight;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setupUI();
    }
    public void setupUI()
    {
        current_weight = (TextView) findViewById(R.id.current_weight);
        NumberPicker np = (NumberPicker) findViewById(R.id.npId);
        NumberPicker np1 = (NumberPicker) findViewById(R.id.NumberPicker01);
        NumberPicker np2 = (NumberPicker) findViewById(R.id.NumberPicker02);
        NumberPicker np3 = (NumberPicker) findViewById(R.id.NumberPicker03);


        np.setOnValueChangedListener(new OnValueChangeListener()
        {
            public void onValueChange(NumberPicker picker, int oldVal, 
                int newVal)
            {
                current_weight.setText(String.valueOf(newVal)); 
            }        
        });
        np1.setOnValueChangedListener(new OnValueChangeListener()
        {
            public void onValueChange(NumberPicker picker, int oldVal, 
                int newVal)
            {
                current_weight.setText(String.valueOf(newVal)); 
            }        
        });
        np2.setOnValueChangedListener(new OnValueChangeListener()
        {
            public void onValueChange(NumberPicker picker, int oldVal, 
                int newVal)
            {
                current_weight.setText(String.valueOf(newVal)); 
            }        
        });
        np3.setOnValueChangedListener(new OnValueChangeListener()
        {
            public void onValueChange(NumberPicker picker, int oldVal, 
                int newVal)
            {
                current_weight.setText(String.valueOf(newVal)); 
            }        
        });

        np.setMaxValue(10);
        np.setMinValue(1);
        np1.setMaxValue(10);
        np1.setMinValue(1);
        np2.setMaxValue(10);
        np2.setMinValue(1);
        np3.setMaxValue(10);
        np3.setMinValue(1);
    }

【问题讨论】:

  • np.setValue(int v) 不行吗?
  • @user117 using np45.setValue(5); 只是将默认值设置为 5,现在我需要代码使 1 等于 10,因此如果值为 5,它将是 10 x 5 的数字。

标签: java android string math


【解决方案1】:

我不确定你想达到什么,也许你可以试试NumberPicker.Formatter

 np.setMaxValue(10);
 np.setMinValue(1);

 np.setFormatter(new NumberPicker.Formatter() {
        @Override
        public String format(int i) {
            return String.valueOf(i*10);
        }
 });

现在NumberPicker 将值显示为 10,20,30..100 而不是 1,2,3..10。但是内部值不会改变,如果用户选择 100,getValue() 将是 10。

【讨论】:

  • 非常感谢您的代码,这非常接近让我尝试做的事情,但是在另一边……我仍然希望显示 1 到 10 的值。但是,当用户选择 1 时,我要添加它让我们说 (i+10);然后在 textview 上显示 10,如果用户选择 5 那么将显示 50,这有意义吗?
猜你喜欢
  • 2016-12-22
  • 2012-09-01
  • 2015-06-21
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 2013-06-17
相关资源
最近更新 更多