Цвет элемента ListView при выделении не работает должным образом в Android API версии 8/9

Я в настоящее время использую ListView для отображения своего рода элементов. Я реализовал режим действия для выбора нескольких элементов и массового удаления, который хорошо работает в Android 4.x. Но когда я попробовал с API версии 8 или 9 (android 2.2.x / 2.3.x), выделение работает внутренне, как и ожидалось, но элементы строк окрашиваются в случайном порядке.

Если пользователь выбирает первую строку, внутренне выбирается первая строка, но строка № 4 окрашена. Когда я щелкаю по другой строке, эта и первая строки окрашиваются. Это странное поведение, которое я ожидаю, чтобы работать нормально, как на устройствах 4.x.

Переопределение с помощью длинного щелчка, чтобы активировать режим действия и проверить элемент 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, отвечающий за проверку / снятие отметки с элементов ListView, их внутреннюю маркировку и изменение цвета фона:

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

Эти классы / методы находятся внутри Activity,listView объявлено в верхней части этого.

Больше соображений:

Using ActionBarSherlock (it shows the CAB but I think this is not important here) and Roboguice, but I haven't any problem with that. I was always developing with the emulator. In addition, I couldn't try my app with android 3.x (got problems with this version, emulator doesn't launch), so I don't know if the problem persists in these versions. UPDATE: Tested in android 3.0 API 11, works well as on 4.x. I debugged the code and Views in both methods are ok, but when I call view.setBackgroundColor(checkedColor);, another View is colored.

Любое предложение? Надеюсь, кто-нибудь может помочь!

Ответы на вопрос(1)

Ваш ответ на вопрос