2012-03-25 17 views
4

私はボタンとスピナー(元は隠れている)を持っています。ユーザーがボタンを押すと、スピナーにアイテムが表示され、表示されます。今度はOnItemSelectedListenerをスピナーに追加したいと思います。私は運がない多くのチュートリアルを試しました。SpinnerにOnItemSelectedListenerを追加する

これは、これは私のload_routesこれは動作しません設定

private void load_routes(View v) 
{ 
    Spinner routes = (Spinner)findViewById(R.id.routes_list); 
    List<String> routes_list = RouteParser.get_routes(); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, routes_list); 
    routes.setAdapter(adapter); 

    TableRow list_of_routes_row = (TableRow)findViewById(R.id.list_of_routes_row); 
    list_of_routes_row.setVisibility(View.VISIBLE); 
} 

機能している

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button load_routes = (Button)findViewById(R.id.load_routes); 
    Spinner routes = (Spinner)findViewById(R.id.routes_list); 

    load_routes.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      load_routes(v); 
     } 
    }); 

    routes.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    { 
     public void onItemSelected(AdapterView<?> arg0, View v, int position, long id) 
     { 
      Log.v("routes", "route selected"); 
     } 

     public void onNothingSelected(AdapterView<?> arg0) 
     { 
      Log.v("routes", "nothing selected"); 
     } 
    }); 
} 

私のOnCreate関数です。私がこれを動作させる唯一の方法は、リスナーをroutes.setOnItemSelectedListener(this)としてセットアップするときです。次に、OnItemSelectedListenerを実装し、必要な関数を含めます。しかし、私は複数のスピナーを持ち、異なるスピナーのために別々のリスナーを作成する必要があります。どんな助けもありがとう。ありがとう!

+0

load_routes()関数でroutes_listを再度表示したことがありますか? –

答えて

1

FindViewByIdを実行した後でSpinnerをフィールドとして宣言し、必要に応じて使用します。

4
final String[] s2 = getResources().getStringArray(R.array.capteur_size); 
    final EditText ed = (EditText) findViewById(R.id.editTextCoC); 

    spinnerCoC = (Spinner) findViewById(R.id.spinnerCoC); 

    spinnerCoC.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 

      ed.setText(s2[arg2]); 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     }  

    }); 
+0

このソリューションの理由を説明する必要があります –

関連する問題