在Android上的GridView中设置突出显示的项目

时间:2013-04-09 09:12:44

标签: android android-gridview

有时候我很惊讶地看到简单的事情很难找到解决方案。

我有一个GridView,有6列和多行。每个项目都是一个背景颜色的正方形。当我选择一个项目时,它会在listSelector设置

时突出显示
<GridView
        android:id="@+id/listFontColors"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="center_horizontal"
        android:layout_margin="8dip"
        android:drawSelectorOnTop="true"
        android:gravity="center"
        android:horizontalSpacing="3dp"
        android:listSelector="@drawable/color_list_selected"
        android:numColumns="6"
        android:padding="0dip"
        android:scrollbars="none"
        android:stretchMode="columnWidth"
        android:verticalSpacing="3dp" />

当我打开布局时,包含GridView我要突出显示之前选择的项目。由于它后面的适配器有一个ArrayList<Object>很容易找到需要突出显示的位置。问题是执行实际的亮点。

我做了很多测试:

listColors.requestFocus();
listColors.setSelection(9);

if (v != null) {
    v.requestFocus();
    v.setPressed(true);
    v.setSelected(true);
}
listColors.performItemClick(listColors, 9, listColors.getItemIdAtPosition(9));

这些都不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

最简单的方法是保存position并在getView()方法内的Adapter类中进行检查。

if(selected_position = position){
    view.setBackgroundResource(selected_resource_id);
}
else{
    view.setBackgroundResource(resource_id);
}

然后只需在适配器上调用notifyDataSetChanged()