2016-04-10 3 views
0

私はちょっと見渡しましたが、このようなトピックのスレッドはまだ私には全く意味がありません。Spinnerのアイテムに浮動小数点値を割り当てます。

私はスピナーとそのスピナー内のアイテムを持っています。そのスピナーの項目はstrings.xmlの文字列配列(stateNames)に格納されます。

スピナー内の各アイテムに独自の浮動小数点値が設定されるようにするにはどうすればよいですか?私はスピナーでどの項目が選択されたかに基づいて、異なる算術演算をしたい。例えば

スピナー項目1 1.2

スピナー項目2に値が3.6

スピナー項目3の値を有する7.31

等の値を有します

ここ

は、変数名の参照のための私のコードです:

stateSpinner = (Spinner)findViewById(R.id.stateSelect); 
    stateSpinnerAd = ArrayAdapter.createFromResource(this,R.array.stateNames,android.R.layout.simple_spinner_item); 
    stateSpinnerAd.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    stateSpinner.setAdapter(stateSpinnerAd); 
    stateSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 
+0

一貫性のあるソリューションをお探しの場合は、カスタムアダプターを作成してロジックを作成する必要があります – Pooya

答えて

0

R.array.stateNamesで識別されるテキスト配列内の同じ位置に対応山車の別の配列を作成します。

float[] floats = new float[] { 1.2f, 3.6f, 7.13f }; 

次に、onItemSelected()で選択した項目の位置を受け取ったら、この新しい配列にインデックスを付けます。この新しい配列をテキスト配列と同じ長さにする必要があります。

+0

私はかなり経験がありません。浮動小数点型配列のインデックスを作成するにはどうすればよいですか? – ooppzzy

0

スピナーは特別なものです... parent.getIdを取得する必要があります。これは選択されたものを教えてくれます...それぞれをテストせずにIDを取得する方法はわかりません私はトーストを使用しました。

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      switch(parent.getId()){ 
       case 2131558516: 
         answer = 3.432; 
        //Toast.makeText(getApplicationContext(), "" + parent.getId(), Toast.LENGTH_SHORT).show(); 
        break; 
       case 234343243: 
         answer = 7.61; 
         break; 
    } 
0

各項目のテキストは、実際の浮動小数点値である場合、項目のテキストから、または元の配列からフロート文字列を解析に使用するためにはるかに安全になります。

関連する問題