Ich versuche, den Inhalt eines Listview in Android zu ändern. Danach möchte ich, dass die Liste neu gezeichnet wird. Leider ändern sich die Listenelemente, aber die alten Elemente werden im Hintergrund angezeigt. Wenn in der neuen Liste weniger Elemente vorhanden sind, scheinen die alten Elemente immer noch Teil der Liste zu sein, da sie immer noch angezeigt werden, auch wenn sie nicht anklickbar sind. Wenn ich über den Android Taskmanager aus der App steige und danach die App wieder öffne, wird die Liste korrekt angezeigt! Daher denke ich, es muss ein Problem mit der Aktualisierung sein.Android Listview behält alte Elemente nach Adapteränderungen
Wie kann ich versuchen, es zu erreichen:
Da die kompletten Inhaltsänderungen ich erstellen Sie einen neuen Adapter, die ich an die Listview übergeben. In meinem Code "Favoriten" ist das neue Array, das ich an den Adapter übergebe. Ich versuche auch, die Liste zu löschen und ungültig zu machen.
all dies geschieht in dem UI-Thread (OnPostExecute von 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();
Die klare Methode des Adapters:
public void clear(){
items.clear();
notifyDataSetChanged();
}
Wie Sie ich sie auf Stackoverflow alle Lösungen für ähnliche Probleme versucht sehen . Leider hat nichts funktioniert ...
Vielen Dank im Voraus für irgendwelche Ideen, wie man das löst.
Edit:
Ich habe auch versucht, den Adapter null, um den neuen, bevor er, auch ohne Wirkung. .setAdapter (null);
Auch wenn ich die Tastatur öffne, indem ich in einen editText klicke, wird der Bildschirm aktualisiert und die Liste wird korrekt angezeigt.
Ich habe das versucht, leider keinen Effekt. – AndroidDev23
war es endlich die Lösung? Funktioniert nicht für mich und ich habe das gleiche Problem. – mikus