2011-10-15 92 views
6

我正在实施使用谷歌(Android 3)的新片段的分割视图。保持与SimpleCursorAdapter highlite列表项目

当用户从列表中选择某些东西时,它将在详细信息区域中显示值,并且保持列表项目高亮显示

当我用阵列适配器是保持列表项集中后添加以下内容:

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

,但是当我改变使用使用的数据库SimpleCursorAdapter和自定义行XML文件是亮点只是当我按下。

“我想保持亮点项目列表视图”

回答

9

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

+0

谢谢,我将检查它并返回问题或设置为接受。 – Alex

+0

感谢它的工作,但如何改变标记的颜色和价值的含义是什么 - v11 – Alex

+1

@ahmed:“如何改变标记的颜色” - 改变样式点中的“android:background”值至。现在,它指向一个来自系统定义的主题的值('android:attr/activatedBackgroundIndicator')。 “values-v11的含义是什么” - Android将在具有API Level 11和更高版本的设备上使用该目录中的资源。旧设备将忽略该目录。 – CommonsWare