java - 如何在 onDataChange + Glide 循环 "for"继续之前等待图像加载?

标签 java android firebase firebase-realtime-database android-glide

我知道onDataChange下载是异步的,但是body有UI Thread。并且使用 Glide 加载图片也是异步的。 onDataChange 正在执行,它到达了 UI 线程的主体,但是图像在新线程中加载,因此,图像没有时间加载,如何进一步执行代码。

myRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
              ...
              if(word.contains("https")){
                  Glide.with(Activity.this)
                  .load(url)
                  .into(imageView);
              }else{
                  Log.d(TAG, "Another");
              }
         }
    }
}

这是 Firebase 数据库。

如何在“for”循环继续之前等待图像加载?

最佳答案

如果您使用的是 Glide-v4,您可以像这样设置一个用于加载图像的监听器:

Glide.with(Activity.this)
        .load(url)
        .listener(new RequestListener<Drawable>() {

            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                imageSend(imageView);
                return false;
            }
        })
        .into(imageView);

关于java - 如何在 onDataChange + Glide 循环 "for"继续之前等待图像加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53314573/

相关文章:

AngularFire2 - 在更新之前检查对象是否存在

javascript - 有没有办法在重定向到另一个页面后保持登录状态?

javascript - Angularfire firebase 身份验证 - 谷歌

java - 如何将 '\u' 附加到数字并将结果保存在 char 变量中?

android - Android 应用程序中来自服务器的动态数据的本地化

java - Android WebView中无法获取cookie数据

java - 由: android. database.sqlite.SQLiteException引起:没有这样的表

java - 检查Optionals是否相等的便捷方法

java - 在此代码中,我得到了无法解析符号 R

java - Spring 启动gradle "Could not find or load main class"