Выбор Счетчика Android

Обработчик событий OnItemSelectedListener называют и когда выбор счетчика изменяется программно, и когда пользователь физически нажимает управление счетчиком. Возможно определить, было ли событие инициировано пользовательским выбором так или иначе?

Или есть ли другой способ обработать пользовательские выборы счетчика?

23
задан Arutha 14 April 2010 в 09:01
поделиться

2 ответа

Чтобы решить эту проблему, вам нужно запомнить последнюю выбранную позицию. Затем внутри вашего слушателя счетчика сравните последнюю выбранную позицию с новой. Если они разные, обработайте событие, а также обновите последнюю выбранную позицию с новым значением позиции, иначе просто пропустите обработку события.

Если где-то в коде вы собираетесь программно изменить выбранную позицию счетчика, и вы не хотите, чтобы слушатель обрабатывал событие, просто сбросьте последнюю выбранную позицию на ту, которую вы собираетесь установить.

Да, Spinner в Android - это больно. Я бы даже сказал, что боль начинается с его названия - «Спиннер». Разве это не вводит в заблуждение? :) Поскольку мы говорим об этом, вы также должны знать, что есть ошибка - Spinner может не восстанавливать (не всегда) свое состояние (при вращении устройства), поэтому убедитесь, что вы обрабатываете состояние Spinner вручную.

49
ответ дан 29 November 2019 в 00:51
поделиться

В прошлом я делал подобные вещи для разграничения

internal++; // 'internal' is an integer field initialized to 0
textBox.setValue("...."); // listener should not act on this internal setting
internal--;

Затем в слушателе textBox

if (internal == 0) {
  // ... Act on user change action
}

я использую ++ и --, а не устанавливаю булево значение в 'true', чтобы не было беспокойства, когда методы вложены в другие методы, которые также могут установить внутренний индикатор изменений.

2
ответ дан 29 November 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: