Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-如何强制画廊重新绘制其视图?_Android_Gallery_Border_Invalidation - Fatal编程技术网

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始终为空