Autore Topic: input text con autocompletamento  (Letto 1326 volte)

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
input text con autocompletamento
« il: 28 Luglio 2011, 12:27:30 CEST »
0
Ciao a tutti,
vorrei realizzare nella mia applicazione un input text che, man mano che l'utente scrive la parola nel box si apra una tendina che mostri le parole possibili che iniziano con quelle lettere; una sorta di autocompletamento, per intenderci!

Ho fatto qualche ricerca con "autocompletamento" ma non ho trovato molto...avete qualche spezzone di codice o guida da consigliarmi per realizzare qualcosa di simile?

Il tutto sarebbe complicato dal fatto che le parole possibili dovrebbero essere estratte da un db mysql quindi ad ogni pressione di tasto ci dovrebbe essere una chiamata al db...

Suggerimenti? :)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:input text con autocompletamento
« Risposta #1 il: 28 Luglio 2011, 14:33:35 CEST »
+1
Il widget a cui devi fare riferimento è questo:

AutoCompleteTextView | Android Developers

Probabilmente ci vorrà un po' lavoro per customizzarlo visto che devi andare a prendere i dati da un db remoto ma credo niente di tracendentale :) Ricordati di usare in modo appropriato il multithreading :)

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:input text con autocompletamento
« Risposta #2 il: 28 Luglio 2011, 17:49:35 CEST »
0
Il widget a cui devi fare riferimento è questo:

AutoCompleteTextView | Android Developers

Probabilmente ci vorrà un po' lavoro per customizzarlo visto che devi andare a prendere i dati da un db remoto ma credo niente di tracendentale :) Ricordati di usare in modo appropriato il multithreading :)
Si, avevo visto la presenza di quel widget pero' credevo ci fosse qualcosa gia' di pronto :P

Comunque ti ringrazio, ora vedo un po' se riesco a farne cio' di cui ho bisogno :)

EDIT: non sembra poi cosi' difficile! :D

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:input text con autocompletamento
« Risposta #3 il: 28 Luglio 2011, 18:33:50 CEST »
0
Essendo abituato a lavorare col web credevo che, ad ogni digitazione dell'utente, dovessi eseguire una ricerca sql col una query.

Forse mi sbagliavo perche' basterebbe creare un'array con tutte le possibili voci all'avvio dell'activity e farne un'array, e' giusto come procedimento?
« Ultima modifica: 28 Luglio 2011, 18:42:27 CEST da SoulEdge »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:input text con autocompletamento
« Risposta #4 il: 28 Luglio 2011, 23:05:18 CEST »
0
dai un occhio qui
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:input text con autocompletamento
« Risposta #5 il: 29 Luglio 2011, 10:40:02 CEST »
+1
Essendo abituato a lavorare col web credevo che, ad ogni digitazione dell'utente, dovessi eseguire una ricerca sql col una query.

Forse mi sbagliavo perche' basterebbe creare un'array con tutte le possibili voci all'avvio dell'activity e farne un'array, e' giusto come procedimento?
Dipende da quante parole hai da tenerti in memoria, personalmente userei il database con un campo indicizzato, la ricerca nel database comunque comincerei a farla dopo tre lettere con un limit di 20.
Ma è solo un mio parere personale.
Qualcuno più esperto magari può consigliarti qualche altra soluzione.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:input text con autocompletamento
« Risposta #6 il: 29 Luglio 2011, 11:28:18 CEST »
+1
Dipende da quante parole hai da tenerti in memoria, personalmente userei il database con un campo indicizzato, la ricerca nel database comunque comincerei a farla dopo tre lettere con un limit di 20.
Ma è solo un mio parere personale.
Qualcuno più esperto magari può consigliarti qualche altra soluzione.
anche un limit di 10, tanto poi piu di 6-7 a video non li vedi a meno di scrollare... come dice luigi, dipende dal numero di voci...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:input text con autocompletamento
« Risposta #7 il: 31 Luglio 2011, 09:14:26 CEST »
0
Dipende da quante parole hai da tenerti in memoria, personalmente userei il database con un campo indicizzato, la ricerca nel database comunque comincerei a farla dopo tre lettere con un limit di 20.
Ma è solo un mio parere personale.
Qualcuno più esperto magari può consigliarti qualche altra soluzione.
anche un limit di 10, tanto poi piu di 6-7 a video non li vedi a meno di scrollare... come dice luigi, dipende dal numero di voci...
L'autocompletamento si dovrebbe basare su una lista di circa 950/1000 parole, ecco il motivo per cui non so esattamente come fare :D
Di default ho notato che l'autocompletamento del text inizia dopo la seconda lettera.

Cio' che vorrei realizzare e' che l'utente non puo' inserire, nel text, una voce diversa dalle 950/1000 che ho previsto, anche perche' poi l'eventuale ricerca nel db in base a quella parola si basera' sul suo id e non posso permettere vengano inserite parole non presenti nel db.

Consigli?  o_O

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:input text con autocompletamento
« Risposta #8 il: 03 Agosto 2011, 18:35:16 CEST »
0
Io farei,come già consigliato.
Poi quando l'utente inserisce la (seconda,terza) lettera, e  nel database non esiste una parola con la lettera digitata, elimini i caratteri in eccesso.
Perchè vuoi usare un ID come ricerca ?io indicizzerei un campo testo.
Spero di essermi spiegato bene, sono in vacanza , 8-)
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:input text con autocompletamento
« Risposta #9 il: 03 Agosto 2011, 22:30:51 CEST »
0
Io farei,come già consigliato.
Poi quando l'utente inserisce la (seconda,terza) lettera, e  nel database non esiste una parola con la lettera digitata, elimini i caratteri in eccesso.
Prima o poi implementero' anche questa funzione, per ora lascio l'autocompletetext anche perche' non saprei come eliminare la parola o mostrare nel menu' a tendina la voce "Voce Inesistente" :D

Citazione
Perchè vuoi usare un ID come ricerca ?io indicizzerei un campo testo.
Non ho capito ma attualmente una volta selezionata la parola dall'autocompletetext, la prendo e ricerco nell'array che posizione occupa, e tramite quella posizione estraggo dal DB il record corrispondente a quell'id!

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:input text con autocompletamento
« Risposta #10 il: 05 Agosto 2011, 16:52:51 CEST »
0
Scusa non mi torna qualcosa  :-\ o forse mi sono perso io  :'(

Le parole che vengono fuori nella tendina, non sono estratte già dal database ?
Perchè devi recuperare un id e fare la ricerca nel db ?
Cosa devi estrarre dal db con quell'id ?
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:input text con autocompletamento
« Risposta #11 il: 05 Agosto 2011, 16:58:49 CEST »
0
Scusa non mi torna qualcosa  :-\ o forse mi sono perso io  :'(

Le parole che vengono fuori nella tendina, non sono estratte già dal database ?
Perchè devi recuperare un id e fare la ricerca nel db ?
Cosa devi estrarre dal db con quell'id ?
Ah ora ho capito...:D
Le parole che metto in lista, per fare un esempio, sono solo delle voci del tipo Nome Cognome.
Una volta selezionate dalla tendina, richiamo una nuova intent in cui mostro i dettagli di Nome Cognome (data di nascita, luogo etc.)