Provo a modificare il contenuto di un Listview in Android. Dopodiché voglio che la lista venga ridisegnata. Sfortunatamente gli elementi della lista cambiano, ma i vecchi elementi vengono visualizzati sullo sfondo. Se ci sono meno elementi nel nuovo elenco, sembra che i vecchi elementi facciano ancora parte dell'elenco, poiché sono ancora visualizzati, anche se non sono cliccabili. Se esco dall'app tramite Android Taskmanager e successivamente apro di nuovo l'app, l'elenco viene visualizzato correttamente! Quindi penso che debba essere un problema con l'aggiornamento.Android Listview conserva i vecchi oggetti dopo le modifiche dell'adattatore
Come posso provare a realizzarlo:
Come i cambiamenti di contenuto completo creo un nuovo adattatore che mi passa per la ListView. Nel mio codice "preferiti" è la nuova matrice che passo all'adattatore. Cerco anche di cancellare l'elenco e invalidarlo. tutto questo avviene nel thread UI (OnPostExecute di AsyncTask)
MyAdapter newAdapter = new MyAdapter(
context, favorites);
MyAdapter current_adapter = (MyAdapter) myList.getAdapter();
if((current_adapter!=null)){
current_adapter.clear();}
myList.setAdapter(null); //inserted this because of answers, but with no effect.
myList.setAdapter(newAdapter);
myList.invalidateViews();
Il metodo chiaro dell'adattatore:
public void clear(){
items.clear();
notifyDataSetChanged();
}
Come potete vedere ho provato tutte le soluzioni a problemi simili a lei sul StackOverflow . Purtroppo non ha funzionato ...
Grazie in anticipo per qualsiasi idea su come risolvere questo problema.
Edit:
ho anche cercato di impostare il nulla 'adattatore prima di passare il nuovo, anche senza alcun effetto. . SetAdapter (null);
Anche se apro la tastiera facendo clic su un testo di modifica, la schermata si aggiorna e l'elenco viene visualizzato correttamente.
Ho provato questo, purtroppo nessun effetto. – AndroidDev23
è stata finalmente la soluzione? Non funziona per me e ho lo stesso problema. – mikus