Получить изображение в ImageView, используя Firestore и Firebase Storage - PullRequest
0 голосов
/ 30 мая 2019

У меня есть приложение идентификации, которое получает информацию о пользователе на основе аутентификации пользователя.У меня есть TextView для информации, такой как электронная почта, idnumber и т. Д. У меня есть те, которые отображаются на основе идентификатора входа при входе. Я пытаюсь показать изображение для этого конкретного человека в ImageView.Кроме того, если в систему войдет другой человек, его фотография также будет отображаться.

Это работает в Android Studio.В хранилище Firebase есть изображение с URL.Я создал коллекцию «изображений», которые будут соответствовать IUD (таким образом, UID одинаков для пользователя и изображения), который имеет строку URL-адреса изображения.Ниже приведено изображение его настройки.

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 и ссылки на документ на Firestore на основе идентификатора пользователя, затем перетащите URL-адрес изображения и прикрепите это изображение к ImageView, как я это сделал.со всей другой информацией пользователя.Не работал.**

1 Ответ

1 голос
/ 30 мая 2019

Вы можете использовать плагин Picasso для этого.Вы просто предоставляете ему URL и ImageView, и оно автоматически загружает и помещает ваше изображение в представление.

Просто добавьте его в свой файл зависимостей gradle с помощью:

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

Или maven:

<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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...