Проблема с переключением фона Android CAB ListView

Я пытаюсь добавить CAB (контекстную панель действий) в ListView в своем приложении, и все идет хорошо, за исключением одного. Когда я изначально добавил CAB, цвет фона не изменился, когда я долго нажимал на него, хотя он был выбран. Мое решение состояло в том, чтобы переопределить onItemCheckedStateChanged и установить там цвет фона. Моя проблема в том, что когда я пытаюсь установить цвет фона на тот, который был раньше, я не могу. Фон ListView кажется блеклым, что означает, что я не могу выбрать цвет, который сливается с фоном. Как вы это делаете? Вот мой код:

@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
                                              long id, boolean checked) {

    if (checked) {
        //#6DCAEC is a type of Holo Blue that I want.
        listView.getChildAt(position).setBackgroundColor(Color.parseColor("#6DCAEC"));
    } else {
        //#f1f1f1 was the closest I could get to the background put it still seems out of place
        listView.getChildAt(position).setBackgroundColor(Color.parseColor("f1f1f1"));
    }
}

person SweSnow    schedule 10.12.2012    source источник
comment
Вы хотите очистить фон выделенных элементов после выхода из CAB?   -  person S.D.    schedule 10.12.2012
comment
@Singularity Да, это то, что я хочу сделать.   -  person SweSnow    schedule 10.12.2012


Ответы (2)


Отключите режим выбора на ListView:

mListView.setChoiceMode(ListView.CHOICE_MODE_NONE);

Очистить выбор (это не влияет на видимые элементы, просто очищает внутренний список выбора ListViews)

mListView.clearChoices();

Наконец, переберите видимые элементы и измените их:

 for (int i = 0; i < mListView.getChildCount(); i++) {

        View c = mListView.getChildAt(i);

         //--below code is for un-checking, 
         //--you can do something else, 
         //--like altering the background
        if (c instanceof Checkable) {
            ((Checkable) c).setChecked(false);
        }
    }
person S.D.    schedule 10.12.2012
comment
Если я не позвоню mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); невозможно активировать CAB. Я почти уверен, что вы неправильно поняли мой вопрос. Я знаю, как изменить цвет фона (как вы можете видеть в моем исходном посте). Мне интересно, как мне вернуться к исходному цвету элемента списка. - person SweSnow; 10.12.2012

Попробуйте с этим кодом #e7e8e9, попробовал его на моем телефоне, и он работает хорошо

найдено здесь: Цветовой код голографического света навигационного ящика

person Morendo    schedule 24.02.2014