2012-08-28 83 views
1

我创建了一个显示各种位图的GridView。我希望当用户选择一个单元格时,它的背景颜色会发生变化。这就是我正在做的。我ImageAdapter延伸BaseAdapter有以下几行代码在它的getView功能Android GridView选择背景颜色

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

我的GridView有在onItemClick下面的代码OnItemClickListener。

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

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

亲切的问候。

+0

对不起我的错误。这工作正常,我在绘制适配器时发生了编程错误。 – AndroidDev

回答

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的。您必须保留对当前选定网格项的引用,以便在单击不同项目时取消选择它。

(此代码未测试)

+0

也在'v.setSelected(true);'后加'this.previousSelectedView = v'; – User7723337