Страница 1 из 1
Изменить цвет фона элемента списка
Добавлено: 13 апр 2013, 22:18
jBee
Есть список, элементы списка заполняются из базы. Как сделать чтобы при нажатии на элемент он менял свой фоновый цвет? Вроде бы понятно что это надо делать по событию OnItemClickListener но вот что то работает это не так как надо.
Пробовал сделать так:
Код: Выделить всё
ListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
...
parent.getChildAt(position).setBackgroundColor(Color.BLUE);
...
}
но на строке где устанавливается цвет элемента списка происходит исключение.
Re: Изменить цвет фона элемента списка
Добавлено: 13 апр 2013, 22:37
rezak90
почему бы на элемент не поставить селектор?
Re: Изменить цвет фона элемента списка
Добавлено: 14 апр 2013, 19:01
jBee
rezak90,
Что такое селектор и как его поставить на элемент? Или ткните пожалуйста на какой нибудь простой пример как сделать подсветку элемента списка с помощью селектора.
Re: Изменить цвет фона элемента списка
Добавлено: 14 апр 2013, 19:39
rezak90
selector выглядит так:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_background" android:state_pressed="true"/>
<item android:drawable="@color/Button_pressed"/>
</selector>
Помещается в папку
drawable
Например его название
selector_item, тогда в ячейке лейаута в бэкграунд прописываете
Код: Выделить всё
android:background="@drawable/selector_item"
Re: Изменить цвет фона элемента списка
Добавлено: 14 апр 2013, 21:11
jBee
У меня в проекте несколько папок с именами drawable-hdpi, ldpi и т.д. Получается описание селектора надо положить в каждую?
Re: Изменить цвет фона элемента списка
Добавлено: 14 апр 2013, 22:20
rezak90
jBee писал(а):У меня в проекте несколько папок с именами drawable-hdpi, ldpi и т.д. Получается описание селектора надо положить в каждую?
нет, создать нужно папку в res под названием drawable
Re: Изменить цвет фона элемента списка
Добавлено: 10 апр 2014, 18:28
vapsel
rezak90 писал(а):почему бы на элемент не поставить селектор?
подскажите, а как сделать выделение одного из элементов списка? что б его сразу было видно при открытии активити?
Re: Изменить цвет фона элемента списка
Добавлено: 11 апр 2014, 14:26
elron
Есть несколько вариантов, один из них это создать boolean[], в onClickListener брать position и по нему переключать (b[position] = !b[position]

и вызывать у адаптера notifyDatasetchanged()(как-то так), а в адаптере при прорисовке делать проверку и переключать цвет.
Re: Изменить цвет фона элемента списка
Добавлено: 11 апр 2014, 14:54
elron
Другой вариант: хранить ссылки в массиве linearLayout(или другой), а по onClick вызывать этот linearLayout.get(position).setBackgroundColor(Color.GREEN), как то так.. а position можно хранить в теге linearLayout
Re: Изменить цвет фона элемента списка
Добавлено: 11 апр 2014, 20:18
vapsel
elron писал(а):Есть несколько вариантов, один из них это создать boolean[], в onClickListener брать position и по нему переключать (b[position] = !b[position]

и вызывать у адаптера notifyDatasetchanged()(как-то так), а в адаптере при прорисовке делать проверку и переключать цвет.
хоть я не совсем понял, однако стало ясно, что метод onClickListener подразумевает нажатие. мне же нужно что бы элемент выделялся сразу при открытии списка без дополнительных действий пользователя