我有一个图像库,其中我在当前选择的图像周围放置了一个红色边框(当用户首次打开屏幕时,第一个被选中,所以我在第一个视图周围绘制边框)。
当我点击另一个项目时,我想在新项目中绘制红色边框并删除上一个项目的红色边框。
问题在于我无法更改图库onClick
事件内的边框。如果我改变它,没有任何反应(我认为因为画廊的项目不会重绘)。我试图在我的gallery变量和每个视图中调用invalidate()和postInvalidate()
,但它不起作用!视图不会重绘(也就是说,红色边框仅保留在图库的第一个项目中。)
有没有人知道这里发生了什么?
答案 0 :(得分:3)
在适配器代码中,保留int
值,该值将是所选View
的位置。在onItemClicked
的{{1}}方法中,使用提供的位置更新Gallery
变量。然后,在int
方法中,如果正在绘制的位置是所选位置,请绘制边框。您可以继续使用getView
中提供的View
来应用边框,或者在适配器上调用onItemClicked
。第一种方法是必需的,因为notifyDataSetChanged
将重新创建每个可见的notifyDataSetChanged
。
通常情况下,您还需要检查它是否不所选位置,以便您可以从重用的View
中删除边框。但是,View
始终会创建新的Gallery
。对于View
,convertView
始终为空。
答案 1 :(得分:0)
尝试使用requestLayout();祝你好运。