2

私は8つのスピナーを持っています:

        pl1sp = (Spinner) offersdialoglayout.findViewById(R.id.pl1offer);
        pl2sp = (Spinner) offersdialoglayout.findViewById(R.id.pl2offer);
        pl3sp = (Spinner) offersdialoglayout.findViewById(R.id.pl3offer);
        pl4sp = (Spinner) offersdialoglayout.findViewById(R.id.pl4offer);

        pl1scores = (Spinner) scoresdialoglayout.findViewById(R.id.pl1scores);
        pl2scores = (Spinner) scoresdialoglayout.findViewById(R.id.pl2scores);
        pl3scores = (Spinner) scoresdialoglayout.findViewById(R.id.pl3scores);
        pl4scores = (Spinner) scoresdialoglayout.findViewById(R.id.pl4scores);

2 つのリスナーを設定する必要があります。最初の 4 つのスピナー用に 1 つ、最後の 4 つのスピナー用に 1 つ。次のようなコードを繰り返したくありません。

pl1sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            checkOffersSum(); // same method for first 4 spinners. for last 4 spinners is checkScoresSum()

        }

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

        }

    });
    pl2sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            checkOffersSum();
        }

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

        }

    });

などなど..したがって、リスナーを 2 回だけ記述する必要があります。最初は最初の 4 つのスピナー用で、2 番目は最後の 4 つのスピナー用です。ありがとう

4

4 に答える 4

1

単一のリスナーを使用して複数のスピナーを管理できます。この回答を確認してください。それは同じ問題を扱っています。それが役に立てば幸い。

于 2013-05-05T10:04:00.833 に答える
0

できることは、すべてのスピナーを含む配列を作成し、for ループを使用して個々のスピナーを setItemSelected() メソッドにアタッチすることです。

Spinner[] spinner = {pl1sp, pl2sp, pl3sp, pl4sp}; 
for(Spinner individualSpinner : spinner){
individualSpinner.etOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
           //Custom method here

    }

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

    }

});

Spinner[] spinners = {pl1scores, pl2scores, pl3scores, pl4scores}; 
for(Spinner individualSpinner2 : spinner){
individualSpinner.etOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
           //Custom method here

    }

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

    }

});
于 2018-02-06T09:06:52.110 に答える