Android ListView. Как изменить цвет фона вручную выбранного элемента

Не могли бы вы мне помочь, пожалуйста. Мне нужно изменить цвет фона элемента списка списка, который выбирается вручную функцией setSelection (int pos), и мне нужно оставаться с новым цветом до нового вызова setSelection. Я прочитал несколько тем, как это сделать, но я до сих пор не добился успеха. Благодаря!

Мне удалось это сделать, сделав несколько селекторов для разных состояний

Сначала поместите это в свой список

 android:listSelector="@drawable/list_selector" 

Затем создайте xml-файлы в drawable для управления разными состояниями

@ вытяжка / list_selector

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/list_item_bg_normal" android:state_activated="false"/> <item android:drawable="@drawable/list_item_bg_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/list_item_bg_pressed" android:state_activated="true"/> </selector> 

@ вытяжка / list_item_bg_normal

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="@color/list_background" android:endColor="@color/list_background" android:angle="90" /> </shape> 

@ вытяжка / list_item_bg_pressed

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="@color/list_background_pressed" android:endColor="@color/list_background_pressed" android:angle="90" /> </shape> 

В элементе ListView

 listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) { view.setSelected(true); ... } } 

Не забудьте добавить list_background_pressed и list_background в ваши значения / color.xml или просто установить цвет вручную в каждом файле.

И я верю, что когда вы используете setSelection (int pos) , который автоматически использует макет, который вы установили как выбранный.

Надеюсь, поможет.

 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (updateview != null) updateview.setBackgroundColor(Color.TRANSPARENT); updateview = view; view.setBackgroundColor(Color.CYAN); } }); 
Intereting Posts
Как сделать один файл jar из нескольких классов, который можно использовать в других проектах Активация Bluetooth Активация диалогового окна предупреждения после поворота экрана Можно ли симулировать увеличение скорости прохождения времени в Android? MapFragment возвращает null При использовании AlertDialog.Builder с EditText, Soft Keyboard не появляется Получение SMS с помощью MonoDroid Android: как постоянно и полностью НЕ показывать по умолчанию мягкую клавиатуру для EditText? Как добавить отметку (тень) к моему BottomNavigationView. Он не приходит по умолчанию Moto 360 Развертывание с Android Studio чрезвычайно медленное Как центрировать расширенный заголовок в CollapsingToolbarLayout Как сохранить GIF-образ в SD-карте? Bintray: невозможно загрузить файлы: группа Maven, артефакт или версия, определенные в файле pom, не совпадают Umano Android SlidingUpPanel – анимация Как получить GridView, который адаптирует его высоту при добавлении элементов Как получить TableLayout с двумя столбцами равной ширины