【问题标题】:Retrieve an image to ImageView using Firestore and Firebase Storage使用 Firestore 和 Firebase 存储将图像检索到 ImageView
【发布时间】:2019-05-30 01:36:24
【问题描述】:

我有一个识别应用程序,它根据用户身份验证检索用户信息。我有用于电子邮件、idnumber 等信息的 TextViews。我有那些基于登录时的 uId 显示的信息。我正在尝试向 ImageView 显示该特定人的图片。此外,如果其他人登录,他们的照片也会显示。

这在 Android Studio 中运行。 Firebase 存储有一个带有 url 的图像。我创建了一个“图像”集合,该集合将与具有图像 url 字符串的 iud 对应(因此用户和图像的 uid 相同)。下面是其设置方式的图片。

下面是代码:

    private ImageView ProfileImage;
private Button logout;



@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile);
    fireStore = FirebaseFirestore.getInstance();

    mAuth = FirebaseAuth.getInstance();
    FirebaseUser user = mAuth.getCurrentUser();
    userID = user.getUid();

    Name = (TextView) findViewById(R.id.profileName);
    Email = (TextView) findViewById(R.id.profileEmail);
    TwoPNum = (TextView) findViewById(R.id.profileUid);
    Meal = (TextView) findViewById(R.id.mealsNum);
    PantherFunds = (TextView) findViewById(R.id.pFundsNum);
    Expiration = (TextView) findViewById(R.id.expirationDate);
    Campus = (TextView) findViewById(R.id.campusText);
    ProfileImage = (ImageView) findViewById(R.id.profilePhoto);



    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            //new
            if (user != null) {
                // User is signed in
                Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
                toastMessage("Successfully signed in with: " + user.getEmail());
            } else {
                // User is signed out
                Log.d(TAG, "onAuthStateChanged:signed_out");
                toastMessage("Successfully signed out.");
            }
            showData();
        }

    };

}

private void showData() {
    DocumentReference user = fireStore.collection("users").document(userID);
    user.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if (task.isSuccessful()) {
                DocumentSnapshot doc = task.getResult();

                assert doc != null;
                Name.setText(doc.getString("name"));
                Email.setText(doc.getString("email"));
                TwoPNum.setText(doc.getString("twop_num"));
                Meal.setText(String.valueOf(doc.getLong("meals")));
                PantherFunds.setText(String.valueOf(doc.getDouble("pfunds")));
                Expiration.setText(getDate(Long.parseLong("expiration_date")));
                Campus.setText(doc.getString("campus"));
            }
        }
    });

}

**我的第一个想法是创建另一个方法 ShowImage 并基于 uId 对 Firestore 进行文档引用,然后拉图片的 url 并将该图片附加到 ImageView 就像我对所有其他用户信息所做的那样.没用。 **

【问题讨论】:

    标签: java android firebase firebase-storage


    【解决方案1】:

    您可以使用Picasso 插件来完成此操作。 您只需为其提供一个 url 和一个 ImageView,它就会自动下载您的图像并将其放置在视图中。

    只需将其添加到您的 gradle 依赖文件中:

    implementation 'com.squareup.picasso:picasso:(insert latest version)'
    

    或行家:

    <dependency>
        <groupId>com.squareup.picasso3</groupId>
        <artifactId>picasso</artifactId>
        <version>(insert latest version)</version>
    </dependency>
    

    然后你可以使用这样的东西来加载图像:

    Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView);
    

    【讨论】:

    • 会根据uid添加吗?我不知道
    • 您需要使用 uid 从 Firebase db 获取图像 url,然后在 picasso 的 load() 部分中使用该 url。
    猜你喜欢
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    相关资源
    最近更新 更多