使用Firestore和Firebase存储将图像检索到ImageView

时间:2019-05-30 01:36:24

标签: java android firebase firebase-storage

我有一个识别应用程序,该应用程序基于用户身份验证来检索用户信息。我有TextViews来获取诸如电子邮件,ID号等信息。我有基于登录时的uId进行显示的信息。我正在尝试向ImageView显示该特定人员的图片。另外,如果其他人登录,他们的照片也会显示。

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

enter image description here

enter image description here

下面是代码:

    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上,就像我对所有其他用户信息所做的一样。没有工作。 **

1 个答案:

答案 0 :(得分: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);