我如何将 kotlin 代码转换为 java [Android]

问题描述

这是我试图转换成 java 的代码,但我不明白,实际上我得到这个代码作为答案,但他/她在 kotlin 中给了我

Glide.with(context)
            .load(url)
            .listener(object : RequestListener<Drawable> {
                override fun onLoadFailed(e: GlideException?,model: Any?,target: Target<Drawable>?,isFirstResource: Boolean): Boolean {
                    //Todo: something on exception
                }
                override fun onResourceReady(resource: Drawable?,dataSource: DataSource?,isFirstResource: Boolean): Boolean {
                    Log.d(TAG,"OnResourceReady")
                    dummyShimmerView.visibility = View.GONE
                    postimageView.visibility = View.VISIBLE
                    return false
                }
            })
            .into(imgView)

解决方法

您可以使用:

     Glide
        .with(context)
        .load("url")
        .listener(new RequestListener<Drawable>() {
            @Override
            public boolean onLoadFailed(@Nullable @org.jetbrains.annotations.Nullable GlideException e,Object model,Target<Drawable> target,boolean isFirstResource) {
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource,DataSource dataSource,boolean isFirstResource) {
                dummyShimmerView.setVisibility(View.GONE);
                postImageView.setVisibility(View.VISIBLE);
                return false;
            }
        })
        .into(imageView);
,

我认为您对 RequestListener 部分感到困惑。 Kotlin 使用 object 表示法来实现接口。所以你的代码将大致翻译成这个

 Glide.with(context).load(...)
                .listener(new RequestListener<Drawable>() {
        @Override
        public boolean onLoadFailed(@Nullable GlideException e,boolean isFirstResource) {
          //TODO
          return false;
        }
        @Override
        public boolean onResourceReady(Drawable resource,boolean isFirstResource) {
          // Todo
          return false;
        }
      })

                }).into(imgView);