Сохранить элемент списка highlite с помощью SimpleCursorAdapter

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

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

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

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

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

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

1 ответов


вам нужно установить активированный стиль для строки списка. Загвоздка в том, что это доступно только на уровне 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 логика, это оставит вашу строку активированной после того, как она выявляемый.