Один трюк, который я нашел, заключался в том, чтобы поместить ваши setOnItemSelectedListeners в onWindowFocusChanged вместо onCreate. Я не нашел никаких побочных эффектов, если бы сделал это таким образом. По сути, настройте слушателей после того, как окно будет нарисовано. Я не уверен, как часто запускается onWindowFocusChanged, но достаточно легко создать себе переменную блокировки, если вы обнаружите, что она работает слишком часто.
Я думаю, что Android может использовать систему обработки сообщений, и если вы поместите все это в onCreate, вы можете столкнуться с ситуациями, когда спиннер заполняется после того, как он обращается. Таким образом, ваш слушатель отключится после того, как вы установите местоположение элемента. Конечно, это обоснованное предположение, но не стесняйтесь меня поправлять.