将OnItemSelectedListener添加到Spinner

时间:2012-03-25 01:10:49

标签: android spinner android-spinner

我有一个按钮和一个微调器(最初隐藏)。当用户按下按钮时,微调器将填充项目并变为可见。现在我想将OnItemSelectedListener添加到微调器。我尝试过很多没有运气的教程。

这是我的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并包含必要的函数。但我有多个微调器,需要为不同的微调器创建单独的侦听器。任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分: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

        }       

    });

答案 1 :(得分:1)

声明您的Spinner作为字段在您执行findViewById后实例化侦听器并在任何您想要的地方使用它。