2011-12-28 10 views
0

項目をスピナーで選択した後に変数を設定したい。私はJavaに新しいので、これを行う最良の方法は何か分かりません。私はそれが選択された後に項目をテストしようとしましたが、それを動作させることができません。 新しい変数を作成しなければならず、値はBeginnerの場合は0.5、Advancedの場合は1、Proの場合は1.5でなければなりません。アプリケーションを開発している間は、アイテムが選択されたときに変数の値を使ってトーストメッセージを表示したいと考えています。スピナー項目を選択して変数を設定する - Android

私は瞬間に立ち往生しているので、誰かが私を助けてくれることを願っています。

私のJavaコード:

public class AlbumsActivity extends Activity{ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.albums_layout); 

    Spinner spinner = (Spinner) findViewById(R.id.spinner_experience); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
      this, R.array.experience_array, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 

    class MyOnItemSelectedListener implements OnItemSelectedListener { 

     public void onItemSelected(AdapterView<?> parent, 
       View view, int pos, long id) { 
      Object test = spinner.getSelectedItem(); 
      if "Pro".equals(test) { 
       // Do something 
       Toast.makeText(parent.getContext(), "The planet is " + 
        parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); 
      } 
     } 

     public void onNothingSelected(AdapterView<?> parent) { 
      // Do Nothing 
     } 
    } 

    spinner.setOnItemSelectedListener(new MyOnItemSelectedListener()); 
} 

レイアウトXML

<LinearLayout 
    android:orientation="vertical" 
    android:padding="10dip" 
    android:id="@+id/linearLayout_Experience" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dip" 
     android:text="@string/experience_prompt" /> 
    <Spinner 
     android:id="@+id/spinner_experience" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:drawSelectorOnTop="false" 
     android:prompt="@string/experience_prompt" /> 
</LinearLayout> 

スピナーのための私の文字列:私の頭の上の

<resources> 

<string name="experience_prompt">Select your experience</string> 
<string-array name="experience_array"> 
    <item>Beginner</item> 
    <item>Advanced</item> 
    <item>Pro</item> 
</string-array> 

答えて

0

(そうタイプミスやその他のエラーが発生する可能性がありますRS):

public void onItemSelected(AdapterView<?> parent, 
      View view, int pos, long id) { 
     if(pos == 0) { 
      // Beginner 
      Toast.makeText(parent.getContext(), "Beginner = 0.5", Toast.LENGTH_LONG).show(); 
     } else if(pos == 1) { 
      // Advanced 
      Toast.makeText(parent.getContext(), "Advanced = 1", Toast.LENGTH_LONG).show(); 
     } else { 
      // Pro 
      Toast.makeText(parent.getContext(), "Pro = 1.5", Toast.LENGTH_LONG).show(); 
     } 
    } 

あなたはキーを保持するためのHashMapで多くのことを、それを整えることができます:あなたがここに示唆されているさまざまなレベルの値のペアをしていますが、唯一の3つのレベルがある場合、これは正常に動作する必要があります。またparent.getItemAtPosition(pos).toString()は、スピナー内部ビューではないテキストのIDを返しますString test = spinner.getSelectedItem().toString();

Object test = spinner.getSelectedItem();を交換する

import android.app.Activity; 
import android.view.*; 
import android.os.Bundle; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.Toast; 

public class AlbumsActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final Spinner spinner = (Spinner) findViewById(R.id.spinner_experience); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       this, R.array.experience_array, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 


     spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
       Object test = spinner.getSelectedItem(); 
       Toast.makeText(AlbumsActivity.this, "The planet is " + 
         spinner.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parentView) { 
       // your code here 
      } 

     }); 

    } 
} 
0

はこれを試してみてください。このテキストを使用取得するには:

TextView TV=parent.getItemAtPosition(pos); 

をしてTV.getText().toString();

parent.getItemAtPosition(pos).toString()を置き換えます
0

試してみてください。

関連する問題