我有一个识别应用程序,该应用程序基于用户身份验证来检索用户信息。我有TextViews来获取诸如电子邮件,ID号等信息。我有基于登录时的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上,就像我对所有其他用户信息所做的一样。没有工作。 **
答案 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);