使用SimpleCursorAdapter保留highlite列表项

时间:2011-10-15 18:22:11

标签: java android sqlite list user-interface

我正在使用Google的新片段(Android 3)实现分割视图。

当用户从列表中选择某些内容时,它会在详细信息区域显示值,保持列表项突出显示

当我使用数组适配器时,它会在添加以下内容后保持列表项集中:

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

但是当我使用 SimpleCursorAdapter 和自定义行xml文件更改为使用数据库时,只要我按下它就会突出显示。

“我想在列表视图中保持突出显示项目”

1 个答案:

答案 0 :(得分:9)

您需要为列表行设置激活的样式。问题在于,这仅适用于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逻辑,这会在点击后激活您的行。