2012-03-25 67 views
4

我有一个按钮和一个微调(最初隐藏)。当用户按下按钮时,微调器会填充项目并变得可见。现在我想将OnItemSelectedListener添加到微调器。我已经尝试了许多教程,但没有运气。将OnItemSelectedListener添加到Spinner中

这是我的OnCreate函数

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

这是我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); 
} 

此设置不起作用。我得到这个工作的唯一方法是当我设置我的听众为routes.setOnItemSelectedListener(this)然后我执行OnItemSelectedListener并包括功能需求。但我拥有多个spinners,需要为不同的微调创建单独的监听器。任何帮助将不胜感激。谢谢!

+0

为什么你要在load_routes()函数中再次查看routes_list? – 2012-04-04 10:44:38

回答

1

声明你的微调为字段实例化侦听器,一旦你findViewById并使用它,无论你想要的。

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

你应该解释你的解决方案的原因 – 2014-01-01 21:14:51