ListView не показывает никакой обратной связи - PullRequest
1 голос
/ 20 ноября 2010

Я наткнулся на странную проблему с ListViews.

В эмуляторе ListView не показывает никакой обратной связи, когда элемент выбран для выбора. Я думаю, что видел это на самом деле, но я не уверен. Я ожидаю, что элемент списка будет выделен (более темный фон) при нажатии, чтобы пользователь мог видеть, какой элемент он нажал.

Должен ли я это кодировать?

RG

После просмотра комментариев я попробовал следующее:

Я создал файл res / color / backgroundstate.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
          android:color="#888"/>
    <item android:state_pressed="true"
          android:color="#888"/>
    <item android:color="#eee"/>
</selector>

Затем я использую это в listitem.xml в качестве цвета фона

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/helptextcolor"
    android:background="@color/backgroundstate"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>

Когда я отображаю ListView с

    ArrayAdapter adapter=new ArrayAdapter<String>(this,R.layout.listitem,names);
    LV.setAdapter(adapter);
    LV.invalidate();

программа вылетает.

С этим связано три исключения. Но проблема, похоже, является последней XMLPullParserException:

<item> tag needs a drawable.

Теперь

Ответы [ 3 ]

2 голосов
/ 21 ноября 2010

<item> действительно нуждается в рисовании, а не в цвете.Для этого вам нужен цвет, который можно нарисовать, например:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="#FFFF0000" />
</shape>

... и затем поместите его в свой список предметов.
Кроме того, это рисунок, который должен быть вкаталог /res/drawable-*, а не каталог /res/color/.

Чтобы подвести итог:

  • (необязательно), поместите ваши цвета в /res/values/color.xmlфайл с именем
  • Создайте две формы для рисования в формате xml в каталоге / res / drawable, одну для нейтрального цвета, одну для нажатого цвета, как показано выше
  • Создайтесписок состояний можно рисовать, как вы, но в каталоге / res / drawable
  • Используйте это в качестве фона элемента списка
0 голосов
/ 11 февраля 2011

Я решил проблему.

Смотрите здесь: http://androidjava.wordpress.com/2010/11/22/listview-and-color-states/

0 голосов
/ 20 ноября 2010

Да и нет.Дело не в том, что вы должны его кодировать, но вы не должны его отключать.

Если вы используете настраиваемые представления для отображения элементов списка, вы должны поместить рисованный объект, который позволяет вашему представлению давать отзыв, когдавыбран.Например, обычное битовое отображение не выполняется.

Самый простой способ сделать это - создать нарисованный список состояний, например:
http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
Запись списка будет вести себя как кнопка, описанная впример.Если ваш фон для рисования включает в себя рисование state_pressed, оно должно отображаться при нажатии записи списка.

...