Android - 如何强制图库重绘其视图?

时间:2012-05-04 02:20:33

标签: android gallery border invalidation

我有一个图像库,其中我在当前选择的图像周围放置了一个红色边框(当用户首次打开屏幕时,第一个被选中,所以我在第一个视图周围绘制边框)。

当我点击另一个项目时,我想在新项目中绘制红色边框并删除上一个项目的红色边框。

问题在于我无法更改图库onClick事件内的边框。如果我改变它,没有任何反应(我认为因为画廊的项目不会重绘)。我试图在我的gallery变量和每个视图中调用invalidate()和postInvalidate(),但它不起作用!视图不会重绘(也就是说,红色边框仅保留在图库的第一个项目中。)

有没有人知道这里发生了什么?

2 个答案:

答案 0 :(得分:3)

在适配器代码中,保留int值,该值将是所选View的位置。在onItemClicked的{​​{1}}方法中,使用提供的位置更新Gallery变量。然后,在int方法中,如果正在绘制的位置是所选位置,请绘制边框。您可以继续使用getView中提供的View来应用边框,或者在适配器上调用onItemClicked。第一种方法是必需的,因为notifyDataSetChanged将重新创建每个可见的notifyDataSetChanged

通常情况下,您还需要检查它是否所选位置,以便您可以从重用的View中删除边框。但是,View始终会创建新的Gallery。对于ViewconvertView始终为空。

答案 1 :(得分:0)

尝试使用requestLayout();祝你好运。