2013-08-09 18 views
5

Questo problema mi ha infastidito da un po 'di tempo. Ho una vista elenco e in ogni riga ci sono tre EditText in cui l'utente può inserire i dati. Quando un utente seleziona una casella di modifica, il testo deve essere selezionato, quindi quando digita la prima chiave, il testo precedente viene rimosso.Comportamento strano con selectAllOnFocus quando EditText è in ListView

Questo funziona perfettamente con l'opzione selectAllOnFocus impostata su true. Il problema si verifica quando devo chiamare notifyDataSetChanged. C'è un pulsante in ogni riga che cancella la riga e cioè quando chiamo il metodo notifyDataSetChanged dell'adattatore. Dopodiché, quando un utente seleziona un EditBox, non seleziona tutto il testo, ma il cursore si posiziona sul lato sinistro del testo e una freccia viene visualizzata sotto il cursore.

Ho provato a selezionare selectAllOnFocus nel codice e nel file di layout, ma senza fortuna.

Cosa dovrei provare? Mi sto perdendo qualcosa?

Ho provato disabilitando l'evento di messa a fuoco modificata, senza fortuna.

Grazie!

risposta

0

Dal momento che questo stava accadendo ogni volta che io chiamo adapter.notifyDataSetChanged(), ho pensato che avrei dovuto cercare di andare intorno ad esso. E questo è quello che ho finito per fare:

adapter.clear();  
adapter = new AdapterOfWhateverItemsTypeIs(this, items); 
listview.setAdapter(adapter); 
adapter.notifyDataSetChanged(); 

Dopo questo, ho avuto il comportamento previsto possibilità di selectAllOnFocus EditText di.

0

Qual è il comportamento previsto che si sta tentando di raggiungere?

EDIT:

Perché non provi sparando a due eventi click manualmente. È una soluzione leggermente hacky ma se funziona non importa a chi importa. Che cosa si può fare è ottenere la vista dalla vostra vista elenco che si desidera il testo selezionato nel e sparare i due clic in un post in questo modo

myEdit.post(new Runnable(){ 

    public void run() 
    { 
    myEdit.performClick(); 
    myEdit.performClick(); 
    } 

} 

utilizzando il palo sarebbe fare in modo che gli eventi stato licenziato dopo la vista era stato ri-gonfiato dopo aver chiamato invalida sul vostro adattatore ListView

+0

Leggere attentamente la domanda :) Quando l'utente seleziona un EditText, viene selezionato l'intero testo e viene visualizzata la tastiera. Questo è quello che voglio, ma non funziona sempre così. A volte (di solito dopo che la tastiera è visibile) quando l'utente seleziona un EditText diverso, non seleziona (evidenzia) l'intero testo, ma si focalizza solo sul lato più a sinistra del controllo e una freccia viene visualizzata sotto il cursore. –

+0

Scusa se non sono stato abbastanza chiaro, ti preghiamo di modificare la domanda se pensi di poterla migliorare. E fammi sapere se hai bisogno di ulteriori dettagli. Grazie –

+0

Quindi vuoi posizionare il cursore alla fine del testo? –