Autore Topic: AutoCompleteTextView e OnKeyListener  (Letto 978 volte)

Offline bistick

  • Nuovo arrivato
  • *
  • Post: 8
  • Lorenzo Denami
  • Respect: 0
    • lorenzodenami
    • bistick
    • Mostra profilo
    • Lorenzo Denami
  • Dispositivo Android:
    X10 mini pro
  • Sistema operativo:
    Windows Seven X64
AutoCompleteTextView e OnKeyListener
« il: 24 Settembre 2010, 15:12:58 CEST »
0
Ciao amici, mi piacerebbe capire meglio come funzionano i listener con Android. Sto facendo qualche prova con gli elementi grafici della libreria, in particolare con gli AutoCompleteTextView. Prima di spiegarvi qual'è il mio intento e magari indirizzarmi verso un'altra soluzione, mi piacerebbe capire come fare ad aggiungere un nuovo listener al componente piuttosto che sostituirlo. Nel momento in cui sostituisco il listener di default, il componente non funziona bene e non aggiorna o cancella il testo alla pressione dei tasti.


Codice (Java): [Seleziona]
autoCompleteTextView.setOnKeyListener(new OnKeyListener() {
                       
                        public boolean onKey(View v, int keyCode, KeyEvent event) {
                                return false;
                        }
                });

come impostare due listener e eseguire due operazioni diverse quando si intercettano gli eventi?
L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi.

Edsger Dijkstra

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:AutoCompleteTextView e OnKeyListener
« Risposta #1 il: 24 Settembre 2010, 20:09:25 CEST »
+1
Di default non è possibile.

Puoi sempre ereditare la classe AutoCompleteTextView e implementare tu questa funzionalità
Codice (Java): [Seleziona]
import java.util.ArrayList;

import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.widget.AutoCompleteTextView;

public class CustomAutoCompleteTextView extends AutoCompleteTextView {

        private ArrayList<OnKeyListener>        onKeyListeners;

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

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

        public CustomAutoCompleteTextView ( Context context, AttributeSet attrs, int attributeInt ) {
                super( context, attrs, attributeInt );
        }

        public void addOnKeyListener ( OnKeyListener onKeyListener ) {
                if ( onKeyListeners == null ) {
                        onKeyListeners = new ArrayList<OnKeyListener>();
                }

                onKeyListeners.add( onKeyListener );

        }

        @Override
        public boolean dispatchKeyEvent ( KeyEvent event ) {

                if ( onKeyListeners != null ) {
                        for ( OnKeyListener listener : onKeyListeners )
                                listener.onKey( this, event.getKeyCode(), event );
                }

                return super.dispatchKeyEvent( event );
        }

}

Poi invece che invocare il setOnKeyListener invochi addOnKeyListener
« Ultima modifica: 24 Settembre 2010, 20:19:17 CEST da JD, Reason: Corretto un typo »

Offline bistick

  • Nuovo arrivato
  • *
  • Post: 8
  • Lorenzo Denami
  • Respect: 0
    • lorenzodenami
    • bistick
    • Mostra profilo
    • Lorenzo Denami
  • Dispositivo Android:
    X10 mini pro
  • Sistema operativo:
    Windows Seven X64
Re:AutoCompleteTextView e OnKeyListener
« Risposta #2 il: 24 Settembre 2010, 21:07:13 CEST »
0
Grazie mille Ricky per la risposta ricca di particolari. In realtà a questa soluzione avevo pensato, ma l'ho scartata perchè poi non avrei saputo editare l'xml del layout con un componente non di default... come metto una CustomAutoCompleteTextView nella mia Activity?
L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi.

Edsger Dijkstra

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:AutoCompleteTextView e OnKeyListener
« Risposta #3 il: 24 Settembre 2010, 22:51:50 CEST »
+1
Codice (XML): [Seleziona]
<view
 class="package.className" altri parametri </view>