0

スピナーについて質問がありますが、その方法についてオンラインで何も見つかりません。

私のアプリには、南西、南東などの地域を選択したスピナーがあります。

2番目のスピナーで利用可能なスピナーの選択が、最初のスピナーで行われた選択に依存するようにしたい。つまり、ユーザーが南西を選択した場合、2番目のスピナーの選択肢はチャールズ湖、アイオワ、アーサー湖などになります。ユーザーが南東を選択した場合、2番目のスピナーの選択肢はグレトナ、ニューオーリンズ、ルーリングなどになります。

どうすればそれを行うことができますか?

例をいただければ幸いです。

ありがとうございました!

4

2 に答える 2

5

このコードを試してください。

お役に立てば幸いです...

public class MainActivity extends Activity {

Spinner sp1,sp2;
ArrayAdapter<String> adp1,adp2;
List<String> l1,l2;
int pos;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    l1=new ArrayList<String>();

    l1.add("A");
    l1.add("B");

    sp1= (Spinner) findViewById(R.id.spinner1);
    sp2= (Spinner) findViewById(R.id.spinner2);

    adp1=new ArrayAdapter<String> (this,android.R.layout.simple_dropdown_item_1line,l1);
    adp1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
    sp1.setAdapter(adp1);

    sp1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub
            pos=arg2;
            add();

        }

        private void add() {
            // TODO Auto-generated method stub
            Toast.makeText(getBaseContext(), ""+pos, Toast.LENGTH_SHORT).show();

            switch(pos)
            {
            case 0:
                l2= new ArrayList<String>();                    
                l2.add("A 1");
                l2.add("A 2");

                adp2=new ArrayAdapter<String>(MainActivity.this,
                        android.R.layout.simple_dropdown_item_1line,l2);
                adp2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                sp2.setAdapter(adp2);

                select();

                break;
            case 1:
                l2= new ArrayList<String>();                    
                l2.add("B 1");
                l2.add("B 2");

                adp2=new ArrayAdapter<String>(MainActivity.this,
                        android.R.layout.simple_dropdown_item_1line,l2);
                adp2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                sp2.setAdapter(adp2);

                select();

                break;
            }

        }

        private void select() {
            // TODO Auto-generated method stub

            sp2.setOnItemSelectedListener(new OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getBaseContext(), "Test "+arg2, Toast.LENGTH_SHORT).show();

                }

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

                }
            });

        }

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

        }
    });
    }

}
于 2012-08-03T04:39:45.960 に答える
0

基本的に、最初のスピナー選択イベントをキャッチします。これにより、2番目のスピナーで利用可能なリストの内容を変更します。変更を有効にするために、invalidateView()を呼び出す必要がある場合もあります。つまり、実際には3つの部分があります

1)onClickハンドラーで選択をキャッチします。

2)2番目のスピナーのデータを変更し、フィルタリング後にスピナー2のデータを調整されたデータにリセットします。

3)必要に応じて2番目のスピナーを無効にし、containingViewのViewを無効にして、すべてが表示されるようにします。

したがって、これらの3つのステップに分解し、それらのいずれかについて質問がある場合はお知らせください。

于 2012-08-03T01:44:32.390 に答える