Android - сохранить элемент ListView выделенным после того, как на него нажали - PullRequest
36 голосов
/ 14 февраля 2012

Итак, у меня есть действие с 2 ListView виджетами, когда вы выбираете значение в первом, второе заполняется значениями, связанными с выбором в первом ListView.Этот механизм работает без проблем, но теперь я хочу, чтобы выбор пользователя оставался выделенным.Я прочитал большое количество вопросов, связанных с этой темой, и, кажется, есть множество способов, которыми можно это сделать, но после попытки 4-5 из них я все еще не могу заставить его работать.

У меня он работает на втором ListView с использованием android:listSelector="#CCCCCC" XML-атрибута, но, похоже, он стирается, как только в смесь вводится OnItemClickListener (как тот, который я использую на своем первом * 1008).*).

Пока вот что я получил:

Пользовательский OnItemClickListener Я нашел просмотр различных ответов по этой теме (слегка изменил его, чтобыдля загрузки моей информации второй ListView):

private class ItemHighlighterListener implements OnItemClickListener {

    private View oldSelection = null;

    public void clearSelection() {
        if(oldSelection != null) {
            oldSelection.setBackgroundColor(android.R.color.transparent);
        }
    }

    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
        clearSelection();
        oldSelection = view;
        view.setBackgroundDrawable(view.getContext().getResources().getDrawable(R.drawable.list_selector));
        loadClubs(mXMLPortalOptions.getRegion(pos).getId());
        mClubList.setAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.list_item_white, mClubs));
    }
}

Вот мой list_selector.xml файл:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true"><shape>
            <solid android:color="#CCCCCC" />
        </shape></item>

    <item android:state_selected="false"><shape>
            <solid android:color="#FFFFFF" />
        </shape></item>

</selector>

Метод (OnItemClick) вызывается и выполняется, но фон моего ListItem остается того же цвета: /

Я не могу поверить, что эта простая задача оказалась настолько сложной.

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

Ответы [ 11 ]

0 голосов
/ 25 сентября 2014

Если вы можете использовать drawable для отображения listItem Выделенный, то вы должны использовать следующий код: -

listView.setSelector(R.drawable.bg_image);

Это работает.

...