0

スピナーに問題があり、何も表示されず、エラーが発生しました。以下のコードを確認してください。

    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

私の問題を特定するのを手伝ってください、私はアンドロイドプログラミングに不慣れです。どんな助けでもいただければ幸いです。ありがとう

4

1 に答える 1

0

小さな例がありますが、スピナーを少し間違った方法で使用していると思います。アダプターとスピナーをセットアップする int pos =0; //クラス変数 List list = new ArrayList(); Spinner spin = (Spinner) findViewById(R.id.id); ArrayAdapter アダプター = new ArrayAdapter(this, android.R.layout.simple_spinner_item, list); アダプター .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 からの 2 番目の値が必要な場合

spinnerValues.get(list.get(pos));
于 2013-07-17T14:07:56.657 に答える