Android - элемент списка, отмеченный в ящике, не меняет цвет

Делая всплеск стиля ящика для проекта, я создал следующий внутренний класс слушателя для своего ящика:

 private class DrawerItemClickListener implements ListView.OnItemClickListener {

    @Override
    public void onItemClick(AdapterView parent, View view, int position, long id) {
        switch(position) {

            case 0:
                Toast.makeText(MainActivity.this, "Item 1 clicked", Toast.LENGTH_SHORT)
                        .show();
                Log.i(TAG, "Item 1 clicked.");

                //Highlight the selected item
                mDrawerList.setItemChecked(position, true);
                //And close the drawer on click
                mDrawerLayout.closeDrawer(mDrawerList);
            break;

            case 1:
            (...)

Который назначается выше в классе:

 // Set the adapter for the list view
        mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mItems));

        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

Странно это не работает. Элементы списка никогда не меняют цвет. Я даже пытался не звонить closeDrawer() и не проверять, изменился ли цвет предметов. Бит Drawer из XML-макета MainActivity выглядит нормально (я пробовал с listSelector и без него):

<ListView
    android:id="@+id/left_drawer"
    android:layout_width="320dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp"
    android:background="@android:color/white"
    android:listSelector="@drawable/abc_list_selector_holo_light"/>

Как и мой пользовательский элемент списка:

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@android:dimen/app_icon_size"
    android:textSize="@dimen/abc_text_size_large_material">
</TextView>

Все это было выполнено в соответствии с рекомендациями и учебными пособиями для навигационного ящика с веб-сайта разработчика Android: Создание панели навигации | Разработчики Android




Ответы (2)


Использовать селектор в качестве фона текстового просмотра

    <?xml version="1.0" encoding="utf-8"?>
    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="@android:dimen/app_icon_size"
        android:textSize="@dimen/abc_text_size_large_material"
 android:background="@drawable/abc_list_selector_holo_light" >
    </TextView> 
person Umesh Chhabra    schedule 22.03.2015
comment
РЕДАКТИРОВАТЬ: Ну, на самом деле это все еще не работает с пользовательским макетом списка - person Deegriz; 22.03.2015
comment
Использовать селектор в качестве фона корневого макета пользовательского элемента списка - person Umesh Chhabra; 22.03.2015
comment
Я сделал это, сославшись на это: stackoverflow.com/questions/23895941/ вопрос, но все равно не повезло - person Deegriz; 22.03.2015

Я отправлю код этого макета, изменить в соответствии с вашими потребностями. введите здесь описание изображения

person Umesh Chhabra    schedule 22.03.2015
comment
Нет необходимости, мне удалось заставить его работать. Единственное, что не работает, это код ‹item android:state_activated=true android:drawable=@color/red /› - person Deegriz; 22.03.2015
comment
Оказывается, хотя во многих ответах говорилось, что атрибут listSelector не нужен, мне действительно нужно было обратиться к моему пользовательскому listSelector из моего ListView. Спасибо за помощь! - person Deegriz; 22.03.2015