Autore Topic: [RISOLTO] AutoCompleteTextView  (Letto 2133 volte)

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
[RISOLTO] AutoCompleteTextView
« il: 20 Marzo 2010, 17:47:24 CET »
0
Ho implementato un AutoCompleteTextView e fin qui no problem,
ho settato un arrayAdapter passando i valori da "suggerire" con l'array che chiamiamo ad esempio dati tutto funziona benissimo.

dati [ 0 ]="animale";
dati [ 1 ]="bambola";
dati [ 2 ]="pentola";
dati [ 3 ]="pennuto";
dati [ 4 ]="pozione";

La domanda:
una volta che scelgo la parola suggerita ho impostato onItemClick e qui dispongo di
AdapterView<?> parent, View view, int position, long id

position e id sono riferiti alla lista suggerita in quel momento se ad esempio ho digitato "pe" e mi suggerisce "pentola,pennuto.. " se clicco pentola mi darà position=0 e id=0

quello che vorrei sapere è come ottenere la posizione dell'array dati!!!   :P
si è un po contorto probabilmente..spero di essere stato chiaro
« Ultima modifica: 21 Marzo 2010, 18:21:30 CET da Rolli »
:)          :P    --->|^.^|<---     ;)         :D 

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #1 il: 20 Marzo 2010, 19:28:13 CET »
0
ho trovato in giro un'altra persona che chiede la stessa cosa ma nessuno gli ha mai risposto dal 16 marzo 2009..

non è che sbaglio qualcosa a livello concettuale?

riporto anche la sua richiesta [non identica ma il concetto mi pare lo stesso]:
Citazione
Is there a way to use a List View with setTextFilterEnabled(true) and
get the position into the unfiltered list returned to onItemClick?
E.G.
If I have a list:-
 - Zero
 - One
 - Two
 - Three
And a user types "T" o filter the list to:-
 - Two
 - Three
When a user clicks on "Two" in the filtered list, I would like the id
or position returned to onItemClick to be "2". But instead it returns
0, which is expected as it is the first item in the filtered list. But
what's the best way to get the position in the unfiltered list?
Thanks a lot,
:)          :P    --->|^.^|<---     ;)         :D 

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #2 il: 20 Marzo 2010, 20:26:31 CET »
0
myAutoCompleteTextView.getAdapter().getCount()       

mi restituisce 2.

quindi l'adapter che ricevo è "filtrato"..  :'(
:)          :P    --->|^.^|<---     ;)         :D 

Offline pivot

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #3 il: 21 Marzo 2010, 01:21:28 CET »
0
Io ti suggerirei di usare
 
Codice (Java): [Seleziona]
String selected = (String) parent.getItemAtPosition(position)
Ti aiuta?
« Ultima modifica: 21 Marzo 2010, 16:05:35 CET da pivot »

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #4 il: 21 Marzo 2010, 10:12:04 CET »
0
grazie pivot,

il problema rimane
innanzitutto ho bisogno di sapere l'indice di posizione dell'array originale non filtrato

String selected = (String) parent.getItemAtPosition(position);

position è la posizione della lista filtrata in quel momento quindi sono sempre daccapo..  :o

:)          :P    --->|^.^|<---     ;)         :D 

Offline pivot

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #5 il: 21 Marzo 2010, 15:43:53 CET »
0
Senti Rolli, facciamo così, io ho fin'ora solo letto un po' di documentazione, ma ancora mai implementato. Ora stavo provando un semplice esempio per vedere il tuo problema dell'AutoCompleteTextView. Mi puoi chiarire il discorso di passare il textViewResourceId quando istanzi l'adapter?

Offline pivot

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #6 il: 21 Marzo 2010, 16:05:12 CET »
0
A parte il problema che scrivevo sopra che non ho ancora capito bene, devo approfondire (gli aiuti sono benvenuti), per il resto mi funziona.

Questo il mio OnItemClickListener:

Codice (Java): [Seleziona]
autoCompleteTextView.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    String selected = (String) parent.getItemAtPosition(position);
    textViewResult.setText(selected);
  }
});

Ho provato anche con l'array dati così definito:

Codice (Java): [Seleziona]
String[] dati = new String[] { "animale", "anomalo", "bambola", "bambino", "pentola", "pennuto", "pozione", "porzione" };
Sempre risultato corretto!
« Ultima modifica: 21 Marzo 2010, 16:09:06 CET da pivot »

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #7 il: 21 Marzo 2010, 16:54:04 CET »
0
si è tutto corretto ed è come ho fatto io fin qui ok

nel tuo esempio se scrivi "ba" ti verranno suggerite le parole  "bambola" e "bambino"

se clicchi su bambola e fai un dump della variabile position
otterrai il valore 0
se clicchi su bambino e fai un dump della variabile position
otterrai il valore 1

si tratta della posizione dell'elemento cliccato nella "listView" in quel momento.

io vorrei ottenere il valore 3 [come si presenta nell'array dati che hai postato nel tuo esempio]





« Ultima modifica: 21 Marzo 2010, 16:58:42 CET da Rolli »
:)          :P    --->|^.^|<---     ;)         :D 

Offline pivot

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #8 il: 21 Marzo 2010, 17:39:30 CET »
0
Si, ho visto, ma con parent.getItemAtPosition(position); ottieni comunque il valore corretto. Poi se proprio vuoi l'indice rispetto al tuo array originario lo cerchi in un secondo tempo

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #9 il: 21 Marzo 2010, 17:58:07 CET »
0
è vero ma se l'array dovesse contenere valori duplicati "pesca" (il frutto) e "pesca" (lo sport) !!!
[è solo un esempio magari risolvibile.. ma vorrei trovare soluzioni solide..]
:)          :P    --->|^.^|<---     ;)         :D 

Offline pivot

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView
« Risposta #10 il: 21 Marzo 2010, 18:10:52 CET »
0
Tu devi pensare che ti ritorna un oggetto, poi che nel tuo caso sia una stringa è un altro discorso. Quindi puoi individuare esattamente il tuo oggetto.

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
[RISOLTO] AutoCompleteTextView
« Risposta #11 il: 21 Marzo 2010, 18:21:05 CET »
0
hai ragione e non aggiungo altro!  :P
grazie
« Ultima modifica: 21 Marzo 2010, 18:23:10 CET da Rolli »
:)          :P    --->|^.^|<---     ;)         :D