2011-05-24 6 views
5

Quindi dico Io uso il seguente adattatore per l'AutoCompleteTextView:Utilizzando un adattatore elenco personalizzato con l'AutoCompleteTextView e mantenendo la funzionalità del completamento automatico di lavoro lo stesso

public class RosterAdapter extends ArrayAdapter<Player> { 
... 

} 

che sta usando un oggetto chiamato Player, dove, come il AutoCompleteTextView predefinito funziona con una stringa.

L'elenco viene visualizzato correttamente quando si utilizza quello personalizzato, ma l'unico problema è quando inizio a digitare qualcosa, non visualizza le cose giuste.

Per esempio - se si digita qualcosa bo, mi aspetto che la gente con il nome Bob Henderson, Garry Bobrinski, ecc ..

Ma quello che si presenta è la stessa lista, che non sembra importare che tipo I - Solo in modo casuale arriva.

Posso non utilizzare un oggetto personalizzato affinché funzioni? Devo usare una stringa per farlo corrispondere correttamente alle voci? O è in qualche modo che posso dire di guardare una stringa specifica per ciascuna delle voci?

* Aggiornamento *

Ecco alcuni più codice - questo è come ho impostato l'adattatore personalizzato RosterAdapter. Funziona, ma l'aspetto di completamento automatico di esso non funziona correttamente. È quasi come se si confondesse e non sapesse cosa cercare nell'oggetto, per abbinare la stringa digitata.

AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_players); 
      RosterAdapter adapter = new RosterAdapter(RosterActivity.this, R.layout.roster_row, players); 
      textView.setAdapter(adapter); 

Questo sta usando un ArrayAdapter generica, e questo funziona bene per la corrispondenza delle voci:

AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_players); 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(RosterActivity.this, R.layout.players_autocomplete, players); 
      textView.setAdapter(adapter); 

risposta

6

E 'difficile dire con certezza senza alcun codice, ma credo che si potrebbe non essere implementando getFilter() per a lasciare che l'adattatore usi gli oggetti Player come stringhe.

Per un esempio (requisito non collegati, ma stesso filtro necessario), si veda: How do I Use AutoCompleteTextView and populate it with data from a web API?

C'è un altro esempio qui: http://www.sacoskun.com/2008/08/autocompletetextview-with-simpleadapter.html

+0

Grazie Aleadam - ho finito per usare un work-around, ma ci proverò out' getFilter() ' – xil3

+0

Qual è stato il work-around? Mi sto grattando la testa con questo problema adesso. La cosa strana è che l'elenco contiene risultati telefonici quando inizio a digitare, ma se backspace, inizia a comportarsi (!) –

Problemi correlati