android spinner getselected项目

时间:2012-08-27 06:09:58

标签: java android

Spinner String Array Spinner {久坐,轻度活跃,中度活跃且严重活跃}(这是计算一个人的BMR)

我想要做的是在multiplied中获取所选项目

例如,当我点击久坐不动时,久坐的值 1.2 bmr <的结果/ strong> private void calculateMen(){ String f1 = etft.getText().toString(); String f2 = etin.getText().toString(); String f3 = etweight.getText().toString(); String f4 = etage.getText().toString(); if ( (f1.isEmpty() || f2.isEmpty() || f3.isEmpty() || f4.isEmpty() ) ) { // call for custom toast viewErrorToast(); } else { // Metric Formula for BMR (Men) English Unit // 66 + ( 6.2377 x weight in kilos ) + //( 12.7084 x height in cm ) - ( 6.7550 x age in years ) String age, in, ft, weight; Double answer; age = etage.getText().toString(); in = etin.getText().toString(); ft = etft.getText().toString(); weight = etweight.getText().toString(); if (spinnerText.equals("Sedentary")) { answer = ( ( 66 + ( 6.2377 * Double.parseDouble( weight ) ) + ( 12.7084 * ( Double.parseDouble( in ) * 12 + Double.parseDouble( ft ) ) ) - ( 6.8 * Double.parseDouble( age ) ) ) * 1.2 ); //* Double.parseDouble(actAnswer) ; BigDecimal bd = BigDecimal.valueOf(answer); bd = bd.setScale(2, BigDecimal.ROUND_FLOOR); etanswer.setText(bd.toString()); } else if (spinnerText.equals("Lightly Active")) { answer = ( ( 66 + ( 6.2377 * Double.parseDouble( weight ) ) + ( 12.7084 * ( Double.parseDouble( in ) * 12 + Double.parseDouble( ft ) ) ) - ( 6.8 * Double.parseDouble( age ) ) ) * 1.375 ); //* Double.parseDouble(actAnswer) ; BigDecimal bd = BigDecimal.valueOf(answer); bd = bd.setScale(2, BigDecimal.ROUND_FLOOR); etanswer.setText(bd.toString()); } else if (spinnerText.equals("Moderately Active")) { answer = ( ( 66 + ( 6.2377 * Double.parseDouble( weight ) ) + ( 12.7084 * ( Double.parseDouble( in ) * 12 + Double.parseDouble( ft ) ) ) - ( 6.8 * Double.parseDouble( age ) ) ) * 1.55 ); //* Double.parseDouble(actAnswer) ; BigDecimal bd = BigDecimal.valueOf(answer); bd = bd.setScale(2, BigDecimal.ROUND_FLOOR); etanswer.setText(bd.toString()); } else if (spinnerText.equals("Heavily Active")) { answer = ( ( 66 + ( 6.2377 * Double.parseDouble( weight ) ) + ( 12.7084 * ( Double.parseDouble( in ) * 12 + Double.parseDouble( ft ) ) ) - ( 6.8 * Double.parseDouble( age ) ) ) * 1.725 ); //* Double.parseDouble(actAnswer) ; BigDecimal bd = BigDecimal.valueOf(answer); bd = bd.setScale(2, BigDecimal.ROUND_FLOOR); etanswer.setText(bd.toString()); } // call for custom toast viewBMRSavedToast(); } } // end of calculateMen method 1.2 。但我似乎无法让它为我工作。

请检查下面的代码:

{{1}}

1 个答案:

答案 0 :(得分:0)

请尝试修改以下代码:

创建一个字段:

private HashMap<String, Double> spinnerValues;

从你的活动的onCreate,调用以下函数:

private void createSpinnerValues(){
    spinnerValues=new HashMap<String, Double>();
    spinnerValues.put("Sedentary", 1.2);
    spinnerValues.put("Lightly Active", 1.375);
    spinnerValues.put("Moderately Active", 1.55);
    spinnerValues.put("Heavily Active", 1.725);
}

然后找到你修改过的函数来计算如下:

private void calculateMen(){

    //Your Code Goes here...

     String age, in, ft, weight;
     Double answer;
     age =  etage.getText().toString();
     in =  etin.getText().toString();    
     ft = etft.getText().toString();
     weight = etweight.getText().toString();

     answer=getAnswer(age,in,ft,weight,getSelectedItemValueFromSpinnerText(spinnerText));

     BigDecimal bd = BigDecimal.valueOf(answer);
     bd = bd.setScale(2, BigDecimal.ROUND_FLOOR);

     etanswer.setText(bd.toString()); 

     // call for custom toast
     viewBMRSavedToast();
    }

private Double getAnswer(String age, String in, String ft, String weight,
        Double selectedItemValueFromSpinner) {
    double answer = ( ( 66 + ( 6.2377 * Double.parseDouble( weight ) ) + 
             ( 12.7084 * ( Double.parseDouble( in ) * 12 + Double.parseDouble( ft ) ) )
             - ( 6.8 * Double.parseDouble( age ) ) ) * selectedItemValueFromSpinner ); 
    return answer;
}

private Double getSelectedItemValueFromSpinnerText(String spinnerText) {
    return spinnerValues.get(spinnerText);
}

不要忘记将您现有的代码包括在://您的代码在这里......