4

2 つのスピナーを持つ Android アクティビティの作成に取り組んでいます。コールバック関数onItemSelectedListenerを使用して、for one スピナーを実装する方法を理解しています。onItemSelected

    public void onItemSelected(AdapterView<?> parent, View view,
                           int pos, long id) {
    Spinner spinner = (Spinner) findViewById(R.id.spinnerOneOfTwo);
    spinner.setOnItemSelectedListener(this);
    //do things with selection...
}

ただし、複数のスピナーがある場合はどうなりますか? 別の関数が必要になるように思えますが、両方のスピナーがコールバックするように設定されているonItemSelected()ため、そのアプローチを取ることはできません。どのスピナーがonItemSelected()関数を呼び出しているかを知る方法はありますか? おそらく、スピナーが呼び出しを行っているパラメーター キーの 1 つですか? 次に、その ID をスピナー変数の ID のパラメーターとして設定できますか?

方法があることは知っています (1 つのアクティビティに複数のスピナーを配置するのは私だけではありません)。ヒントは大歓迎です!

4

6 に答える 6

19

2 つのスピナーで同じものを実装して、OnItemSelectedListenerこれを試してみましょう。

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

お役に立てれば。

于 2013-09-10T04:23:26.300 に答える
2

すべてのスピナーに同じ onItemSelected リスナーを設定できます。

spinner1.setOnItemSelectedListener(this);
spinner2.setOnItemSelectedListener(this);

スピナーのIDを使用して単一のメソッドでアクションを実装します

@Override
    public void onItemSelected(AdapterView<?> spinner, View view,
                                                  int position,long arg3) 
    {
    int id = spinner.getId();  //You can also use int id= view.getId();
    switch (id) 
    {
            case R.id.spinner1:
            // Do what you want
            break;
        case R.id.spinner2:
           // Your another task
        break;

    }
于 2013-09-10T04:34:11.823 に答える
0

複数を使用する場合は、この例を使用してくださいonItemSelectedListeners

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

        }
    };
于 2013-09-10T04:25:37.143 に答える