如何刷新ImageView的内容

时间:2015-03-01 15:51:03

标签: android

我有一个ImageView的屏幕,其中包含实际的个人资料图片。我可以通过用相机拍照或从SD卡中挑选照片来编辑该个人资料照片。我将新选择的个人资料图片存储在与旧的相同的路径下(我覆盖它),这是我猜的逻辑。

但是,当我将新的个人资料图片设置为ImageView时,它无法刷新。我必须重新启动应用程序以查看更改。

this.imageView.invalidate();

当我浏览谷歌时所有人都告诉我要做的事情但是没有,这是行不通的!那么我如何强制我的imageview加载新的个人资料图片?

我在Picasso的帮助下将图片加载到ImageView

Picasso picasso = Picasso.with(context);

if(reload) {
    picasso.invalidate(new File(fileName));
}

RequestCreator requestCreator = picasso.load(new File(fileName));
requestCreator.into(imageView);

2 个答案:

答案 0 :(得分:7)

Picasso缓存加载的图像以加快加载过程。这意味着,如果您尝试重新加载相同的图片,则会加载缓存版本,但不会从磁盘读取更改的File

您需要告诉Picasso图片已更改,并且需要通过使缓存无效来从磁盘重新加载图片。你这样做的方式是这样的:

File file = new File(fileName);
Picasso picasso = Picasso.with(context);
picasso.invalidate(file);
picasso.load(file).into(imageView);

答案 1 :(得分:4)

要跳过Picasso的缓存,您可以使用.memoryPolicy(MemoryPolicy.NO_CACHE)静态方法:

Picasso
    .with(context)
    .load(file)
    .memoryPolicy(MemoryPolicy.NO_CACHE)
    .into(imageView);