Spinner инициализируется, когда начинается моя деятельность - Android - PullRequest
4 голосов
/ 09 мая 2011

У меня есть Spinner, имя которого: turListe.Он получает входные значения из базы данных.Когда я начинаю свою деятельность, onOtemSelected запускается автоматически.Как я могу решить эту проблему?

turListe.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            String turAdi;
            Intent intent = new Intent(MainScreen.this, TarifListe.class);
            Bundle bundle = new Bundle();

            turAdi = arg0.getItemAtPosition(arg2).toString();
            bundle.putString("turad", turAdi);
            intent.putExtras(bundle);
            startActivity(intent);
        }

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

        }

    });

Ответы [ 4 ]

1 голос
/ 20 июня 2012

Полагаю, я решил это с помощью флага boolen как статического в глобальном объявлении.

MyOnItemSelectedListener onItemSelectedListener = new MyOnItemSelectedListener(false);
sp_choose1.setOnItemSelectedListener(onItemSelectedListener);
sp_choose2.setOnItemSelectedListener(onItemSelectedListener);
onItemSelectedListener.getDataforList();

Используйте этот класс и переключите логическое значение, чтобы включить или отключить вызовы onItemSelectedListener.

private class MyOnItemSelectedListener implements OnItemSelectedListener {

        public MyOnItemSelectedListener(boolean bool){
            spinner_bug = bool;
        }

        public void onItemSelected(AdapterView<?> parent,
                View view, int pos, long id) {
            Toast.makeText(parent.getContext(), "The planet is " +
                    parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
            if(spinner_bug)
                getDataforList();
        }

        public void onNothingSelected(AdapterView parent) {
            // Do nothing.
        }

        private void getDataforList(){  
                  //dosomething
                }
     }
1 голос
/ 12 мая 2011

Я решил свою проблему с помощью кнопки рядом с соответствующим счетчиком.Я знаю, что это не идеальное решение, но оно быстро решило мою проблему.

0 голосов
/ 09 мая 2011

Используйте только OnItemSelectedListener () вместо AdapterView.OnItemSelectedListener ()

0 голосов
/ 09 мая 2011

Это известная проблема.Я полагаю, что одним из возможных обходных путей является установка адаптера на счетчике перед вызовом setOnItemSelectedListener().

Если это невозможно, вы можете использовать логическое значение, например isAdapterSet, и использовать метод onItemSelected().проверьте его, чтобы увидеть, должно ли оно игнорировать событие выбора или нет.

...