Выделение серого значка в ImageView на белый при нажатии всей записи списка в ListView, а затем возврат назад

У меня есть список значков и текста в виде списка. Значки и текст в списке серые на белом фоне. Когда пользователь нажимает на запись, значки и текст должны становиться белыми, а фон поля ввода становится оранжевым.

У меня текст стал белым, а фон стал оранжевым при нажатии. У меня проблемы с изображением, которое меняется с серого на белое при нажатии и обратно, когда оно больше не нажимается.

У меня есть два набора изображений или значков. Один набор серого цвета для неактивного (не нажатого), а другой набор белого цвета, который активен (нажатый) в папке ресурсов.

Он загружает серые значки, когда приложение загружается через DrawerItemAdapter ранее в коде.

mThumbsId — это массив с изображениями R.drawable.

Я попытался изменить изображение на версию с белым значком при нажатии. Но как вернуться к серому цвету, если он больше не выбран?

        mDrawerList.setOnItemClickListener(new DrawerItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> arg0, View view,
                int position, long id) {
            // TODO Auto-generated method stub

            Object o = mDrawerList.getItemAtPosition(position);
            String pen = o.toString();
            Toast.makeText(getApplicationContext(), "You have chosen: " + " " + pen, Toast.LENGTH_SHORT).show();
            ImageView image = (ImageView)view.findViewById(R.id.menuImage);

            image.setBackgroundResource(mThumbIds[position]);

        }   

    }

person user3192319    schedule 17.01.2014    source источник
comment
Еще нет. Спасибо за ваш вклад. Он меняется на белые/новые изображения. Но как вернуться к серому значку, когда действие нажатия завершено.   -  person user3192319    schedule 18.01.2014


Ответы (1)


Вы должны программно написать селектор и установить его в фоновом режиме в ImageView.

Нравиться:

StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed},
     getResources().getDrawable(white image id position));
states.addState(new int[] {},
     getResources().getDrawable(grey image id position));
image.setBackgroundResource(states);
person user543    schedule 18.01.2014