多个Spinner上的OnItemSelectedListener不起作用

时间:2012-10-09 04:15:05

标签: android android-spinner

我有一个包含多个Spinners的Activity(大约8-9)。我使用的代码如下:

Spinner sp1, sp2, sp3, sp4, sp5;
sp1 = (Spinner) findViewById(R.id.spinner1);
sp2 = (Spinner) findViewById(R.id.spinner2);
sp3 = (Spinner) findViewById(R.id.spinner3);
sp4 = (Spinner) findViewById(R.id.spinner4);
sp5 = (Spinner) findViewById(R.id.spinner5);

sp1.setOnItemSelectedListener(this);
sp2.setOnItemSelectedListener(this);
sp3.setOnItemSelectedListener(this);
sp4.setOnItemSelectedListener(this);
sp5.setOnItemSelectedListener(this);

//Outside onCreate I'm using the following to handle the spinner Item Selected event.

@override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    // TODO Auto-generated method stub
    switch (arg0.getId()) {
    case R.id.spinner1:
        Toast.makeText(getApplicationContext(), arg0.getItemAtPosition(arg2).toString(), Toast.LENGTH_LONG).show();
        break;
    case R.id.spinner2:
        Toast.makeText(getApplicationContext(), arg0.getItemAtPosition(arg2).toString(), Toast.LENGTH_LONG).show();         
        break;
    case R.id.spinner3:
        Toast.makeText(getApplicationContext(), arg0.getItemAtPosition(arg2).toString(), Toast.LENGTH_LONG).show();
        break;
    case R.id.spinner4:
        Toast.makeText(getApplicationContext(), arg0.getItemAtPosition(arg2).toString(), Toast.LENGTH_LONG).show();
        break;
    case R.id.spinner5:
        Toast.makeText(getApplicationContext(), arg0.getItemAtPosition(arg2).toString(), Toast.LENGTH_LONG).show();
        break;
    }
}

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

}

但问题是我在任何纺纱厂选择项目时都没有Toast。任何帮助,将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:2)

package com.meta;

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

import com.meta.R;

public class SpinnerActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Spinner sp1, sp2, sp3, sp4, sp5;
        sp1 = (Spinner) findViewById(R.id.spinner1);
        sp2 = (Spinner) findViewById(R.id.spinner2);
        sp3 = (Spinner) findViewById(R.id.spinner3);
        sp4 = (Spinner) findViewById(R.id.spinner4);
        sp5 = (Spinner) findViewById(R.id.spinner5);

        sp1.setOnItemSelectedListener(myListener);
        sp2.setOnItemSelectedListener(myListener);
        sp3.setOnItemSelectedListener(myListener);
        sp4.setOnItemSelectedListener(myListener);
        sp5.setOnItemSelectedListener(myListener);



    }

    OnItemSelectedListener myListener=new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
             switch (arg2) {
                case 1:
                    Toast.makeText(SpinnerActivity.this,"Spinner 1", Toast.LENGTH_LONG).show();
                    break;
                case 2:
                    Toast.makeText(SpinnerActivity.this, "Spinner 2", Toast.LENGTH_LONG).show();         
                    break;
                case 3:
                    Toast.makeText(SpinnerActivity.this, "Spinner 2", Toast.LENGTH_LONG).show();
                    break;
                case 4:
                    Toast.makeText(SpinnerActivity.this,"Spinner 2", Toast.LENGTH_LONG).show();
                    break;
                case 5:
                    Toast.makeText(SpinnerActivity.this, "Spinner 2", Toast.LENGTH_LONG).show();
                    break;
                }

        }

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

        }
    };



}

答案 1 :(得分:1)

public void onItemSelected(AdapterView<?> parent, View view,int pos, long id) {
        switch (parent.getId()) {
        case R.id.your_spinner_1_id:
            // do stuffs with you spinner 1
            break;
        case R.id.your_spinner_2_id:
            // do stuffs with you spinner 2
            break;
        default:
            break;
        }
}