Android-如何强制画廊重新绘制其视图?
我有一个图像库,其中我在当前选中的图像周围放置了一个红色边框(当用户第一次打开屏幕时,第一个被选中,因此我在第一个视图周围绘制边框) 单击另一个项目时,我希望在新项目中绘制红色边框,并删除上一个项目的红色边框 问题是我无法在库的Android-如何强制画廊重新绘制其视图?,android,gallery,border,invalidation,Android,Gallery,Border,Invalidation,我有一个图像库,其中我在当前选中的图像周围放置了一个红色边框(当用户第一次打开屏幕时,第一个被选中,因此我在第一个视图周围绘制边框) 单击另一个项目时,我希望在新项目中绘制红色边框,并删除上一个项目的红色边框 问题是我无法在库的onClick事件中更改边框。如果我改变它,什么也不会发生(我想是因为图库中的项目没有被重新绘制)。我尝试在我的gallery变量和它的每个视图中调用invalidate()和postInvalidate(),但都不起作用!视图不会重新绘制(即,红色边框仅保留在库的第一项
onClick
事件中更改边框。如果我改变它,什么也不会发生(我想是因为图库中的项目没有被重新绘制)。我尝试在我的gallery变量和它的每个视图中调用invalidate()和postInvalidate()
,但都不起作用!视图不会重新绘制(即,红色边框仅保留在库的第一项中)
有人知道这里发生了什么吗?尝试使用requestLayout();祝你好运。在适配器代码中,保留一个
int
值,该值将作为所选视图的位置。在为库
单击的方法中,用提供的位置更新int
变量。然后,在getView
方法中,如果正在绘制的位置是所选位置,则绘制边框。您可以继续使用onimclicked
中提供的视图应用边框,或在适配器上调用notifyDataSetChanged
。执行第一种方法,因为notifyDataSetChanged
将重新创建每个可见的视图
通常,您还需要检查它是否不是所选位置,以便从重用的视图中删除边框。但是,Gallery
总是创建一个新的视图
<对于库
,code>convertView始终为空