【问题标题】:Adding OnItemSelectedListener to Spinner将 OnItemSelectedListener 添加到 Spinner
【发布时间】:2014-01-02 04:53:40
【问题描述】:

我有一个按钮和一个微调器(最初是隐藏的)。当用户按下按钮时,微调器会填充项目并变得可见。现在我想将 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 并包含必要的功能。但是我有多个微调器,需要为不同的微调器创建单独的侦听器。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 为什么又在load_routes()函数中找到view routes_list?

标签: android spinner android-spinner


【解决方案1】:
    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

        }       

    });

【讨论】:

  • 你应该解释你使用这个解决方案的原因
【解决方案2】:

一旦你做了 findViewById 并在任何你想要的地方使用它,就将你的 Spinner 声明为字段实例化侦听器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多