#java #android #sqlite #list #user-interface
#java #Android #sqlite #Список #пользовательский интерфейс
Вопрос:
я реализую 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
логикой это приведет к активации вашей строки после ее нажатия.
Комментарии:
1. СПАСИБО, Я ПРОВЕРЮ ЕГО И ВЕРНУСЬ К ВАМ С ВОПРОСОМ ИЛИ ЗАДАМ КАК ПРИНЯТЬ.
2. спасибо, это сработало, но как изменить цвет метки и в чем смысл значений-v11
3. @ahmed: «как изменить цвет метки» — измените, на что указывает
android:background
значение в стиле. Прямо сейчас он указывает на значение (android:attr/activatedBackgroundIndicator
) из определяемой системой темы. «в чем смысл значений-v11» — Android будет использовать ресурсы в этом каталоге на устройствах с уровнем API 11 и выше. Старые устройства будут игнорировать этот каталог.4. Не знаю, кто проголосовал за этот ответ, но он абсолютно правильный.