使用毕加索将从活动中的远程源获取的图像传递到另一个活动

时间:2016-03-12 13:49:09

标签: android android-intent picasso

我是android开发的初学者。我使用Picasso从URL获取到一个活动'A'的集合图像,并安排在GridView中。现在,我想将用户点击的图像传递给Intent。如何将获取的图像之一传递给另一个活动,而无需再次获取图像。

请帮帮我。

谢谢。

2 个答案:

答案 0 :(得分:1)

如果您尝试在ActivityB中重复使用ActivityA中获取的图像而不再重新获取,则除了调用

之外,您不必执行任何操作
Picasso.with(context).load(url).into(imageView)

两地。

如果两个活动的 url 参数相同,Picasso会自动从缓存中获取图像(当您在ActivityA中调用load时存储它),而不是进行另一次网络调用。

Picasso会自动将您的图像缓存在RAM中,并在内部使用okhttp将其缓存在磁盘中。因此,您不必通过意图明确传递它。

要查看从哪里加载,您可以致电

Picasso.with(getContext()).setIndicatorsEnabled(true).

这会在每张图片的左上角放置一个彩色标记。

红色表示已从网络中调用此内容。

蓝色 - 磁盘

绿色 - 内存

在ActivityA中,它应该是红色的,因为您是从网络加载的。 在ActivityB中,它应该是绿色(或蓝色),因为你是从缓存中获取它。

答案 1 :(得分:0)

我认为您需要在imageView中创建另一个ActivityB,当用户点击某个gridView元素时,会传递imageUrl元素并加载ActivityB上的class Product(Model): """ Base Product Model """ shop_id = columns.UUID(primary_key=True, required=True) product_id = columns.UUID(primary_key=True, required=True, default=uuid.uuid4) wikimart_id = columns.Integer(index=True) # Convert to user defined type? yandex_id = columns.Integer(index=True) 1}}无论哪种方式,我认为你不能将已经加载的imageView传递给 ActivityB 而不再重新加载图像..