Сохранить выделенный элемент списка с помощью SimpleCursorAdapter - PullRequest
6 голосов
/ 15 октября 2011

Я реализую splitview, используя новый фрагмент от Google (Android 3).

когда пользователь выбирает что-то из списка, это показывает значение в области сведений и сохраняет выделение элемента списка .

Когда я использовал адаптер массива, он сохраняет фокус списка после добавления следующего:

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setItemChecked(postition, true);

но когда я переключаюсь на использование базы данных, используя SimpleCursorAdapter и пользовательский XML-файл строки, он выделяется только при нажатии.

«Я хочу сохранить выделенный элемент в виде списка»

1 Ответ

9 голосов
/ 16 октября 2011

Вам необходимо установить активированный стиль для строки списка. Суть в том, что это доступно только на уровне API 11 и выше.

Один из способов сделать это - использовать два разных стиля. В res/values-v11/styles.xml вы можете получить:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="activated" parent="android:Theme.Holo">
    <item name="android:background">?android:attr/activatedBackgroundIndicator</item>
  </style>
</resources>

Тогда как res/values/styles.xml вы бы имели:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="activated">
  </style>
</resources>

Ваш макет строки будет затем использовать этот стиль activated, например:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@android:id/text1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:textAppearance="?android:attr/textAppearanceLarge"
  android:gravity="center_vertical"
  android:layout_marginLeft="4dip"
  android:minHeight="?android:attr/listPreferredItemHeight"
  style="@style/activated"
/>

В сочетании с существующей логикой CHOICE_MODE_SINGLE ваша строка будет активирована после нажатия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...