Android GridView适配器未检测到最后一个单元格上的单击

Android GridView适配器未检测到最后一个单元格上的单击,android,gridview,Android,Gridview,我有一个GridView适配器,它以两种模式运行。在一种模式下,单击单元格时,它将打开一个活动,其中显示了单元格中内容的大图。在另一种模式SelectMode中,每个单元格都会显示一个复选框,单击单元格时,复选框会被设置或清除,活动标题栏中会显示许多选定的单元格 当我切换到选择模式时,网格中的最后一个单元格似乎没有收到单击。我之所以说“似乎”,是因为当我单击其他单元格时,标题栏中显示的选定计数反映了最后一个单元格的选择,即使单击最后一个单元格时从未调用OnClick事件,并且在最后一个单元格中从

我有一个GridView适配器,它以两种模式运行。在一种模式下,单击单元格时,它将打开一个活动,其中显示了单元格中内容的大图。在另一种模式SelectMode中,每个单元格都会显示一个复选框,单击单元格时,复选框会被设置或清除,活动标题栏中会显示许多选定的单元格

当我切换到选择模式时,网格中的最后一个单元格似乎没有收到单击。我之所以说“似乎”,是因为当我单击其他单元格时,标题栏中显示的选定计数反映了最后一个单元格的选择,即使单击最后一个单元格时从未调用OnClick事件,并且在最后一个单元格中从未设置复选框。网格视图中的单元数是可变的,但总是最后一个单元出现此问题

任何指点都将不胜感激。下面是备份GridView的BaseAdapter的代码,我猜问题出在getView()的某个地方

谢谢,, 加里

这些线路:

viewHolder.checkBox.setId(position);
viewHolder.imageView.setId(position);
viewHolder.id = position;
viewHolder.checkBox.setChecked(mThumbSelection[position]);
也应该在
convertView!=空

当您在
列表视图
网格视图
上滚动时,退出屏幕的视图将放置在回收器中。每当需要创建新行时,如果有可用的视图,将使用循环视图。这是为了加快滚动速度,因为从头创建视图非常昂贵

问题是,由于您仅在创建新视图时设置这些值,因此第一个重用的视图将具有在该视图被回收之前的id,而不是正确的id

viewHolder.checkBox.setId(position);
viewHolder.imageView.setId(position);
viewHolder.id = position;
viewHolder.checkBox.setChecked(mThumbSelection[position]);