Ho due filatori che voglio essere "legati" l'uno all'altro in un senso mutuamente esclusivo: se selezioni un oggetto in uno, il testo di quell'articolo diventa rosso e appare in alto, mentre l'altro torna alla visualizzazione della selezione iniziale ("titolo") (se un altro elemento è stato precedentemente selezionato) e il suo testo diventa bianco."Synchronizing" two spinners
questo viene eseguito tramite gli ascoltatori 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"));
....
e viceversa per la "questione filatrice". Il mio problema è che, se sto passando da uno spinner all'altro e seleziono l'elemento principale, onItemSelectedListener non si registra perché l'elemento selezionato è già selezionato.
Mi è stato detto che questo non è possibile. O, piuttosto, mi è stato detto che è impossibile per un listener onItemSelected attivare un elemento già selezionato. Mentre mi rendo conto che questo è tecnicamente vero, questo problema sembra relativamente semplice e sono sicuro che ci deve essere una soluzione alternativa per produrre l'effetto desiderato.
Ho alcune domande riguardanti alcuni che sto meditando:
- C'è un modo per impostare tutti gli elementi in un filatore come non selezionata, mentre ancora la visualizzazione di uno di loro?
- Posso utilizzare un diverso tipo di evento (ad esempio "setOnTouchListener", "setOnClickListener", ecc.), Presumibilmente sull'elemento superiore, in combinazione con lo
onItemSelectedListener
? - Devo utilizzare un diverso tipo di evento da solo, forse sulle Visualizzazioni gonfiate nello stesso filatore, senza lo
onItemSelectedListener
? - Potete aiutarmi a trovare una strategia migliore di quelle a cui si fa riferimento nei punti elenco sopra?
Ma è fondamentale per il design generale di questa app che il menu si apra come uno spinner, cioè che le opzioni scendano. – drewmoore
@drewmore Ho dato una risposta che risolve il problema descritto nella domanda. Per prima cosa ho considerato la sottoclassificazione del 'Spinner' e l'override del metodo responsabile (dove è esplicito che' onItemSelectedListener' non viene chiamato se l'elemento scelto è lo stesso), ma ciò non era possibile, poiché il metodo è privato. Puoi emulare l'animazione se ne hai bisogno così male usando altri mezzi. Tuttavia, se la mia risposta non ti aiuta a causa di alcuni non divulgati nei motivi della domanda, allora dovresti modificare la tua domanda. – Shade