Не удалось сбросить цвет фона для элемента ListView - PullRequest
0 голосов
/ 21 декабря 2011

В пользовательском адаптере я сделал следующее в методе getView :

        if ( ual.getTransactionCategory() == TransactionCategory.WARNING ){
            convertView.setBackgroundColor(convertView.getResources().getColor(R.color.yellow_warning));
        }
        ...
        return convertView;

Установив адаптер в ListView, я успешно сделал элементы предупреждения, отображаемые на желтом фоне. Теперь моя проблема заключается в том, что я хочу установить белый цвет элемента предупреждения при нажатии на него. Итак, в onItemClick ListView я сделал:

        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
            view.setBackgroundColor(getResources().getColor(R.color.white));
        }

Но это не меняет фон.

Вместо этого, если я не установлю фон в getView , я могу изменить фон на любой, который мне нравится в onItemClick . Любое предложение?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2011

Вы делаете ссылку на свой внутренний вид из вида. Ниже должно работать.

public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
        ImageView iv = (ImageView) v.findViewById(R.id.menu_icon); //What ever your inline view is
        iv.setBackgroundColor(getResources().getColor(R.color.white));
}
0 голосов
/ 21 декабря 2011

Вам необходимо использовать состояние нарисованного ресурса .В этом чертеже вы можете определить цвет для разных состояний.Затем, когда вы строите представление, сделайте это вместо:

if ( ual.getTransactionCategory() == TransactionCategory.WARNING ){ 
    convertView. setBackgroundResource(R.drawable.your_state_drawable);
}
...
return convertView;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...