我创建了一个显示各种位图的GridView。我希望当用户选择选择一个单元格时,它的背景颜色会发生变化。这就是我在做的事情。我的ImageAdapter扩展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();
这应该切换布尔变量,然后我重绘适配器。但选择不起作用。
亲切的问候。
答案 0 :(得分: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无效。您必须保留对当前所选griditem的引用,以便在单击其他项目时取消选择它。
(此代码未经过测试)