У меня есть два прядильщика, которые я хочу «привязать» друг к другу во взаимоисключающем смысле: если вы выберите элемент в одном, текст этого пункта станет красным и появится вверху, тогда как другой возвращается к отображению начального («title») выбора (если ранее был выбран другой элемент), и его текст становится белым.«Синхронизация» двух прядильщиков
Это все делается через onItemSelected слушателей:
sectionSpin.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View arg1,
int position, long arg3) {
issueSpin.setSelection(0);
((TextView) issueSpin.getChildAt(0)).setTextColor(Color.parseColor("#FFFFFF"));
((TextView) arg1).setTextColor(Color.parseColor("#E3170D"));
....
и наоборот для «выпуска блесны». Моя проблема в том, что если я перехожу от одного счетчика к другому, и я выбираю верхний элемент, onItemSelectedListener не регистрируется, потому что выбранный элемент уже выбран.
Мне сказали, что это невозможно. Или, скорее, мне сказали, что невозможно, чтобы прослушиватель onItemSelected запускал элемент, который уже выбран. Хотя я понимаю, что это технически верно, эта проблема кажется относительно простой, и я уверен, что должно быть обходное решение для получения желаемого эффекта.
У меня есть несколько вопросов по поводу некоторых, что я размышлял:
- Есть ли способ, чтобы установить все элементы в блесны как невыбранные, в то же время отображения одного из них?
- Могу ли я использовать другой тип события (то есть «setOnTouchListener», «setOnClickListener» и т. Д.), Предположительно на верхнем элементе, в сочетании с
onItemSelectedListener
? - Должен ли я использовать другой тип события сам по себе, возможно, на Представлениях, завышенных в самих счетчиках, без
onItemSelectedListener
? - Можете ли вы помочь мне найти лучшую стратегию, чем те, на которые ссылаются в пунктах выше?
Но для общего дизайна этого приложения очень важно, чтобы меню открылось, как прядильщик - то есть, что параметры выпадают. – drewmoore
@drewmore Я дал ответ, который решает описанную проблему в вопросе. Сначала я рассмотрел подкласс для «Spinner» и переопределения ответственного метода (где явно указано, что 'onItemSelectedListener' не вызывается, если выбранный элемент одинаков), но это было невозможно, так как метод является закрытым. Вы можете эмулировать анимацию, если вам это нужно так плохо, используя некоторые другие средства. Однако, если мой ответ не поможет вам из-за некоторых не раскрытых в вопросе причин, то вы должны отредактировать свой вопрос. – Shade