Android Spinner值不显示答案

时间:2012-09-01 12:53:46

标签: android

我的旋转器有问题,它没有显示任何东西,我收到了错误。请检查以下代码:

    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 );

} // end of createSpinnerValue   

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;

} // end of getAnswer method

private Double getSelectedItemValueFromSpinnerText( String spinnerText ) { 

    Double val = spinnerValues.get(  spinnerText ); 
    if( val==null ){ 
        Log.i( "DEMO", "Value is null" ); } 
    return val; 

} 


        private void calculateWomen(){

    String f1a = etft.getText().toString();
    String f2a = etin.getText().toString();
    String f3a = etweight.getText().toString();
    String f4a = etage.getText().toString();

    if ( ( f1a.isEmpty() || f2a.isEmpty() || f3a.isEmpty() || f4a.isEmpty() ) ) 
        // call for custom toast
        viewErrorToast();
    else{
    // Metric Formula for BMR (Women) English Unit
    //655 + ( 4.3379 x weight in pounds ) + 
    //( 4.6980 x height in inches ) - ( 4.6756 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();

     answer =  ( ( 665 + ( 4.3379 * Double.parseDouble( weight ) ) + 
             ( 4.6980 * ( Double.parseDouble( in ) ) * 12 + Double.parseDouble( ft ) )
             - ( 4.6756 * Double.parseDouble( age ) ) )  * 1.2);
     BigDecimal bd = BigDecimal.valueOf( answer );
     bd = bd.setScale( 2, BigDecimal.ROUND_FLOOR );
     etanswer.setText( bd.toString() );  


     // call for custom toast
     viewBMRSavedToast();
    }

} // end of calculateWomen method

请帮我识别我的问题,我是android编程的新手。任何帮助,将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

我假设您使用微调器略微错误的方式有一个小例子。 设置适配器和微调器     int pos = 0; //类变量     List list = new ArrayList();     Spinner spin =(Spinner)findViewById(R.id.id);     ArrayAdapter adapter = new ArrayAdapter(this,                     android.R.layout.simple_spinner_item,list);             adapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);             spinPriceFor.setAdapter(适配器);

填充列表(您可以填充设置适配器并跳过此步骤)

list.add(item);
runOnUiThread(new Runnable() {
            public void run() {
                adapterRegion.notifyDataSetChanged();
            }
        });

从微调器

中选择元素
spinSettle.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                pos=position;
String a = list.get(pos); //do what ever you want with selected item
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }
        });

当您需要spinnerValues的第二个值

spinnerValues.get(list.get(pos));