1

我创建了一个显示各种 Bitmaps 的 GridView。我希望当用户选择一个单元格时,它的背景颜色会发生变化。这就是我正在做的事情。我的 ImageAdapter extends BaseAdapter 在 getView 函数中有以下代码行

if(videoObjects.get(position).isSelected)
{
        gridView.setBackgroundColor(Color.BLUE);
}
else
{
        gridView.setBackgroundColor(Color.TRANSPARENT);
}

我的 GridView 有一个 OnItemClickListener,它在 onItemClick 中有以下代码。

   userVideos.get(postion).isSelected=!userVideos.get(postion).isSelected;
    videoBitmapsAdapter.notifyDataSetChanged();

这应该切换布尔变量,然后我重绘适配器。但是选择不起作用。

亲切的问候。

4

1 回答 1

2

使用选择器作为具有 2 种状态的背景可能会更好:

<selector>
 <item state_selected="true" drawable="yourbg" />
 <item state_selected="false" drawable="otherbg" />
</selector>

然后在你的

 onItemClick(View v, ViewGroup parent, int position){
  if (this.previousSelectedView != null) this.previousSelectedView.setSelected(false);
  v.setSelected(true);
 }

这样,就不需要使整个 gridview 无效。您必须保留对当前选定网格项的引用,以便在单击其他项目时取消选择它。

(此代码未经测试)

于 2012-08-28T08:11:22.660 回答