Kolorowanie elementu ListView przy wyborze nie działa poprawnie w Android API wersja 8/9

Obecnie używam ListView do wyświetlania elementów. Zaimplementowałem tryb działania, aby wybrać wiele elementów i usunąć masowo, który działa dobrze w systemie Android 4.x. Ale kiedy próbowałem z API w wersji 8 lub 9 (Android 2.2.x / 2.3.x), wybór działa wewnętrznie zgodnie z oczekiwaniami, ale elementy wiersza są losowo kolorowe.

Jeśli użytkownik wybierze pierwszy wiersz, wybierany jest pierwszy wiersz wewnętrzny, ale numer wiersza 4 jest kolorowy. Kiedy klikam inny wiersz, ten wiersz i pierwszy wiersz są kolorowe. To dziwne zachowanie, które, jak oczekuję, będzie działać normalnie, jak na urządzeniach 4.x.

Długie kliknięcie nadpisuje, aby aktywować tryb akcji i sprawdź długo kliknięty element ListView:

@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, odpowiedzialny za sprawdzenie / odznaczenie elementów ListView, oznaczenie ich wewnętrznie i zmianę koloru tła:

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.");
        }
    }
}

Te klasy / metody znajdują się wewnątrz działania,listView jest zadeklarowany na początku.

Więcej rozważań:

Używanie ActionBarSherlock (pokazuje CAB, ale myślę, że to nie jest tutaj ważne) i Roboguice, ale nie mam z tym żadnego problemu.Zawsze pracowałem nad emulatorem. Ponadto nie mogłem wypróbować mojej aplikacji z Androidem 3.x (problemy z tą wersją, emulator nie uruchamia się), więc nie wiem, czy problem występuje w tych wersjach. AKTUALIZACJA: Testowane na android 3.0 API 11, działa dobrze jak na 4.x.Debugowałem kod iViews w obu metodach są w porządku, ale kiedy dzwonięview.setBackgroundColor(checkedColor);, inneView jest kolorowy.

Jakieś sugestie? Mam nadzieję, że każdy może pomóc!

questionAnswers(1)

yourAnswerToTheQuestion