在 Picasso 转换中保持状态

Keeping state in a Picasso Transformation

我需要在转换中应用不同的边框粗细。也就是说,对于 GridView.

中的每个单元格,左侧可以是 10dp,顶部可以是 8dp 等

我有一个 Transformation,其中包含我在 transform 中使用 Canvas 绘图基元应用的厚度的局部变量。这一切正常,绘图正在进行中。

我的问题:因为每个转换都有不同的参数,这意味着我必须为每个单元格(在我的适配器中)创建一个新的转换,设置它的属性并将其传递给 Picasso 构建器。

我在别处读到,不应多次创建转换,它们可以重复使用。但这在我的场景中是不可能的,因为每个转换都有不同的状态。

我这样做对吗and/or什么是实现我想要做的事情的最佳方式?

谢谢。

如果值是真正动态的,您将必须为每次调用创建一个新实例。这样做并不是世界末日,这只是一个小的分配。大多数转换器是完全无状态的,重复使用同一个实例是有意义的。

您也可以将这些对象合并在一起,但这会不必要地复杂化。您必须处理请求加入、取消以及它们使用方式的异步性质。除非成为问题,否则只需支付配置成本。

如果值的范围有限或者您反复使用相同的值,您可以将这些实例缓存在地图中。