Интерфейс, диалоги, темы, стили, меню
-
jBee
- Сообщения: 41
- Зарегистрирован: 03 апр 2013, 16:24
Сообщение
jBee » 13 апр 2013, 22:18
Есть список, элементы списка заполняются из базы. Как сделать чтобы при нажатии на элемент он менял свой фоновый цвет? Вроде бы понятно что это надо делать по событию OnItemClickListener но вот что то работает это не так как надо.
Пробовал сделать так:
Код: Выделить всё
ListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
...
parent.getChildAt(position).setBackgroundColor(Color.BLUE);
...
}
но на строке где устанавливается цвет элемента списка происходит исключение.
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 13 апр 2013, 22:37
почему бы на элемент не поставить селектор?
R.id.team
Политика на форуме запрещена
-
jBee
- Сообщения: 41
- Зарегистрирован: 03 апр 2013, 16:24
Сообщение
jBee » 14 апр 2013, 19:01
rezak90,
Что такое селектор и как его поставить на элемент? Или ткните пожалуйста на какой нибудь простой пример как сделать подсветку элемента списка с помощью селектора.
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 14 апр 2013, 19:39
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"
R.id.team
Политика на форуме запрещена
-
jBee
- Сообщения: 41
- Зарегистрирован: 03 апр 2013, 16:24
Сообщение
jBee » 14 апр 2013, 21:11
У меня в проекте несколько папок с именами drawable-hdpi, ldpi и т.д. Получается описание селектора надо положить в каждую?
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 14 апр 2013, 22:20
jBee писал(а):У меня в проекте несколько папок с именами drawable-hdpi, ldpi и т.д. Получается описание селектора надо положить в каждую?
нет, создать нужно папку в res под названием drawable
R.id.team
Политика на форуме запрещена
-
vapsel
- Сообщения: 16
- Зарегистрирован: 23 мар 2014, 00:23
Сообщение
vapsel » 10 апр 2014, 18:28
rezak90 писал(а):почему бы на элемент не поставить селектор?
подскажите, а как сделать выделение одного из элементов списка? что б его сразу было видно при открытии активити?
-
elron
- Сообщения: 31
- Зарегистрирован: 14 окт 2012, 13:29
Сообщение
elron » 11 апр 2014, 14:26
Есть несколько вариантов, один из них это создать boolean[], в onClickListener брать position и по нему переключать (b[position] = !b[position]

и вызывать у адаптера notifyDatasetchanged()(как-то так), а в адаптере при прорисовке делать проверку и переключать цвет.
-
elron
- Сообщения: 31
- Зарегистрирован: 14 окт 2012, 13:29
Сообщение
elron » 11 апр 2014, 14:54
Другой вариант: хранить ссылки в массиве linearLayout(или другой), а по onClick вызывать этот linearLayout.get(position).setBackgroundColor(Color.GREEN), как то так.. а position можно хранить в теге linearLayout
-
vapsel
- Сообщения: 16
- Зарегистрирован: 23 мар 2014, 00:23
Сообщение
vapsel » 11 апр 2014, 20:18
elron писал(а):Есть несколько вариантов, один из них это создать boolean[], в onClickListener брать position и по нему переключать (b[position] = !b[position]

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