ListView Item Coloring bei Auswahl funktioniert in Android API Version 8/9 nicht richtig

Ich verwende derzeit eine ListView, um eine Art von Elementen anzuzeigen. Ich habe einen Aktionsmodus implementiert, um mehrere Elemente auszuwählen und massiv zu löschen, der in Android 4.x gut funktioniert. Aber als ich es mit der API-Version 8 oder 9 (Android 2.2.x / 2.3.x) versuchte, funktionierte die Auswahl intern wie erwartet, aber die Zeilenelemente sind zufällig gefärbt.

Wenn der Benutzer die erste Zeile auswählt, wird die intern erste Zeile ausgewählt, aber die Zeilennummer 4 ist farbig. Wenn ich auf eine andere Zeile klicke, werden diese und die erste Zeile farbig dargestellt. Es ist ein seltsames Verhalten, von dem ich erwarte, dass es normal auf 4.x-Geräten funktioniert.

Überschreiben durch langes Klicken, um den Aktionsmodus zu aktivieren und das Element von ListView zu markieren, auf das lange geklickt wurde:

@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
    if (actionMode == null) {
        listView.setOnItemClickListener(new CABClickListener());
        actionMode = startActionMode(new ListActionMode());
        // Check item pressed with long click
        listView.setItemChecked(position, true);
        view.setBackgroundColor(checkedColor);
        logger.debug("Item at pos. " + position + ", checked.");
    }
    return true;
}

CABClickListener, der dafür verantwortlich ist, Elemente von ListView zu aktivieren / deaktivieren, sie intern zu markieren und ihre Hintergrundfarbe zu ändern:

private final class CABClickListener implements AdapterView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        if (listView.isItemChecked(position)) {
            view.setBackgroundColor(checkedColor);
            logger.debug("Item at pos. " + position + ", checked.");
        } else {
            view.setBackgroundColor(uncheckedColor);
            logger.debug("Item at pos. " + position + ", unchecked.");
        }
    }
}

Diese Klassen / Methoden befinden sich in der Aktivität,listView wird oben drauf deklariert.

Weitere Überlegungen:

Mit ActionBarSherlock (es zeigt das CAB, aber ich denke, das ist hier nicht wichtig) und Roboguice, aber ich habe kein Problem damit.Ich habe mich immer mit dem Emulator entwickelt. Außerdem konnte ich meine App nicht mit Android 3.x testen (Probleme mit dieser Version, Emulator startet nicht), sodass ich nicht weiß, ob das Problem in diesen Versionen weiterhin besteht. UPDATE: Getestet in Android 3.0 API 11, funktioniert auch unter 4.x.Ich habe den Code und getestetViews sind in beiden methoden ok, aber wenn ich anrufeview.setBackgroundColor(checkedColor);, Ein weitererView ist gefärbt.

Irgendein Vorschlag? Hoffe, jemand kann helfen!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage