毕加索与Kotlin的回呼

时间:2019-04-24 12:11:23

标签: android kotlin picasso

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

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)

3 个答案:

答案 0 :(得分:3)

在最新版本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")
                }
            })

答案 1 :(得分:1)

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

                    }

                    override fun onError() {
                        //do smth when there is picture loading error
                    }
                })

答案 2 :(得分:0)

嗨,这是毕加索提供的几种不同方式:

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

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

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

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

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

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