Как выбрать первый элемент блесны в тесте - PullRequest
6 голосов
/ 04 марта 2012

У меня есть тесты, в которых я тестирую OnItemSelectedListener на Spinner.Он отлично работает при тестировании элементов, которые> 0. Но кажется, что я не могу протестировать первый элемент.

Моя текущая реализация, которая работает, если я выбираю элементы с индексом> 0, выглядит следующим образом.

final Addpointer addPointer = getActivity();

    addPointer.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            EditText address = (EditText) addPointer.findViewById(R.id.address);
            address.setText("a");
            Spinner spinner = (Spinner) addPointer.findViewById(R.id.intOrHex);
            spinner.setSelection(0);
            View view = (View)  spinner.getChildAt(0);
            long id = spinner.getAdapter().getItemId(0);
            spinner.performItemClick(view, 0, id);

        }
    });

Что мне нужно сделать, чтобы тест «выбрал» первый элемент?

Заранее спасибо

Роланд

Ответ: 1) Рахул Гарг о настройке "оживить" был ключом к решению проблемы.2) Но вы не можете вызвать onSelectionChanged, если выбор фактически не изменился (0 было начальным состоянием, поэтому мне нужно было установить его в единицу, прежде чем я вернул его в ноль.

Ответы [ 3 ]

7 голосов
/ 04 марта 2012

Использовать

spinner.setSelection(0,true);

Второй параметр фактически оживит выбор до индекса 0.

6 голосов
/ 26 июня 2015

более "прозрачный" способ:

     Spinner.setSelection(Adapter.NO_SELECTION, false);**

* второй аргумент для анимации выбора

** это следует вызывать после:

     Spinner.setAdapter(...); 

или любой другой метод, который включает Spinner.setSelection () , например:

    Adapter.notifyDataSetChanged(); 

& для OnItemSelectedListener () не запускаться

0 голосов
/ 05 марта 2012

Посмотрите пример приложения SpinnerTest в Руководстве разработчика.На самом деле он отправляет нажатия клавиш в активность.

...