Autore Topic: Intercettare l'apertura di uno spinner o il click dell'utente su un item  (Letto 1027 volte)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Sto diventando pazzo nel cercare di capire come posso intercettare l'apertura di uno spinner oppure l'effettivo click da parte dell'utente su un item (non mi interessa quale).
Il setOnItemSelectedListener purtroppo viene lanciato sia quando viene selezionato da codice sia quando lo seleziona l'utente ma a me serve intercettare quando l'utente effettivamente seleziona qualcosa.
Suggerimento sono benvenuti :)


Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Intercettare l'apertura di uno spinner o il click dell'utente su un item
« Risposta #1 il: 27 Maggio 2010, 22:12:11 CEST »
0
Ma da codice non lo gestisci tu? Che problemi ti crea?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Intercettare l'apertura di uno spinner o il click dell'utente su un item
« Risposta #2 il: 27 Maggio 2010, 22:17:28 CEST »
0
IO sto lavorando su una activity che ha scritto il mio collega in cui c'è uno spinner che viene inizializzato e a cui viene posto un listener in modo tale che quando avviene la selezione di un item (da codice o dall'utente) vengono fatte determinate operazioni. Io però ora ho bisogno di intercettare quando l'utente effettivamente apre lo spinner o seleziona un item nello spinner. Il problema è non posso avvalermi del listener che già ho perchè non posso distinguere quando la selezione è stata fatta da codice oppure dall'utente.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Intercettare l'apertura di uno spinner o il click dell'utente su un item
« Risposta #3 il: 28 Maggio 2010, 12:54:40 CEST »
0
Se a qualcuno può servire, ho esteso la classe Spinner in modo da avere questa funzionalità:

Codice (Java): [Seleziona]
import android.content.Context;
import android.content.DialogInterface;
import android.util.AttributeSet;
import android.widget.Spinner;

public class SmsTypeSpinner extends Spinner {

        public SmsTypeSpinner ( Context context, AttributeSet attrs ) {
                super( context, attrs );
        }

        public SmsTypeSpinner ( Context context, AttributeSet attrs, int defStyle ) {
                super( context, attrs, defStyle );
        }

        public SmsTypeSpinner ( Context context ) {
                super( context );
        }

        private UserClickOnItemListener clickListener;


        @Override
        public void onClick ( DialogInterface dialog, int which ) {
       
                if ( clickListener != null ) {
                        clickListener.onClick();
                }
               
                super.onClick( dialog, which );

        }

        public void addUserClickOnItemListener ( UserClickOnItemListener clickListener ) {
                this.clickListener = clickListener;
        }

        public interface UserClickOnItemListener {
                public void onClick ();
        }

}

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Intercettare l'apertura di uno spinner o il click dell'utente su un item
« Risposta #4 il: 28 Maggio 2010, 13:30:18 CEST »
0
Ciao Ricky`, grazie per aver postato la soluzione al tuo problema ;)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !