使用 Kotlin 的 Picasso 回调

Picasso Callback with Kotlin

我正在使用 Kotlin 制作一个 Android 应用程序,需要使用 Picasso 下载图像。我在下面看到了这段 Java 代码,用于将动画设置为图像,但我无法将其转换为 Kotlin,因为我不知道如何在 "into" 函数中设置回调。

Picasso.with(MainActivity.this)
       .load(imageUrl)
       .into(imageView, new com.squareup.picasso.Callback() {
                    @Override
                    public void onSuccess() {
                        //set animations here

                    }

                    @Override
                    public void onError() {
                        //do smth when there is picture loading error
                    }
                });

有人可以帮助我吗?

我的实际代码:

Picasso.with(context)
       .load(url)
       .into(imageDiapo, com.squareup.picasso.Callback)
Picasso.with(MainActivity::this)
       .load(imageUrl)
       .into(imageView, object: com.squareup.picasso.Callback {
                    override fun onSuccess() {
                        //set animations here

                    }

                    override fun onError(e: java.lang.Exception?) {
                        //do smth when there is picture loading error
                    }
                })

您好,这里有一些 Picasso 提供的不同方式:

Picasso.with(context).load(path).into(imageView);

2.create 我们的 utils 包中的一个新文件,将其命名为 picasso.kt 并用下面的简单代码填充它:

 public val Context.picasso: Picasso
    get() = Picasso.with(this)

3。虽然这对应于接收者对象,但我们可以在任何上下文中调用以下代码:

picasso.load(path).into(imageView)
  1. 我们可以更进一步扩展 ImageView class,例如:

    public fun ImageView.load(path: String, request: (RequestCreator) -> RequestCreator) {
    request(getContext().picasso.load(path)).into(this)    }
    

在最新版本中 onError 接收 Exception 作为参数并使用 get() 而不是 with() :

  Picasso.get()
  .load(imageUrl)
  .into(imageView, object :Callback{
   override fun onSuccess() {
   Log.d(TAG, "success")
   }

   override fun onError(e: Exception?) {
   Log.d(TAG, "error")
   }
   })

和上一版本

   Picasso.with(MainActivity::this)
   .load(imageUrl)
   .into(imageView, object: Callback {
                override fun onSuccess() {
                   Log.d(TAG, "success")
                }

                override fun onError() {
                  Log.d(TAG, "error")
                }
            })