как создать страницу профиля пользователя с помощью firebase? - PullRequest
0 голосов
/ 07 сентября 2018

возможно ли создать страницу профиля пользователя в android native без использования какой-либо другой базы данных SQL, потому что я плохо разбираюсь в JSON.

Я хочу создать два действия, одно из которых покажет страницу профиля зарегистрированному пользователю (firebase auth) и другим пользователям. второй макет будет предназначен для редактирования профиля и возможности добавления изображения профиля, полного имени, возраста и адреса (я использовал аутентификацию телефона firebase, поэтому нет необходимости использовать адрес электронной почты или пароль).

Я пытался получить идентификатор пользователя и сохранить его в пожарном хранилище в новой коллекции с другими объектами, но у меня это не сработало.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Что вы можете попробовать, так это то, что вы можете настроить базу данных Firebase Realtime и сохранить в ней значения, например, такие как: имя пользователя, imageURL, возраст и адрес.

После того, как вы получите все эти данные (я полагаю, вы можете сделать это сами).Вы можете сохранить данные в дочернем элементе users в своей базе данных Firebase, используя следующий код:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userRef = rootRef.child("users");
DatabaseRefrence detailRef = ref.child(userName);
detailRef.child("age").setValue(age);
detailRef.child("imageURL").setValue(imageURL);
detailRef.child("address").setValue(address);

Чтобы получить доступ и показать данные выше во втором упражнении, вы должны использовать event-listeners,следующим образом:

// for example you have to read and show the address of the user from database

userRef.child(Current_userName).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        String address = dataSnapshot.child("address").getValue(String.class);


                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

Вы можете сделать это, чтобы прочитать все данные и отобразить их в вашем профиле активности.Для действия, в котором вы хотите, чтобы они редактировали эти данные, вы можете получить их ввод и использовать Maps для обновления всех значений в базе данных, например:

userRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                String identifier = userName;

                Map<String,Object> values = new HashMap<>();
                values.put("address", address);
                values.put("age",age);
                values.put("imageURL",newImageURL);

                userRef.child(identifier).updateChildren(values);

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

Это также вызовет слушателей в вашемкласс профиля и они будут соответственно обновлены.

0 голосов
/ 07 сентября 2018

Создать документ в Firestore следующим образом

DocumentReference docRef = firebaseFirestore.collection(userId).document("Profile");

    docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
        @Override
        public void onSuccess(DocumentSnapshot documentSnapshot) {
            if (documentSnapshot.exists()) {
                Log.v(TAG, "Profile exist");
                getProfileData();
            } else {
                Log.v(TAG, "Profile is not exist");
                firebaseFirestore.collection(userId).document("Profile").set(profileEntity);
            }
        }
    });

Если документ профиля не существует, он создаст новый. Сохраните данные в объекте профиля и сохраните в документе профиля.

Если документ профиля существует:

private void getProfileData() {
    DocumentReference docRef = firebaseFirestore.collection(userId).document("Profile");
    docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if (task.isSuccessful()) {
                DocumentSnapshot document = task.getResult();
                if (document != null) {
                    ProfileEntity profileEntity = task.getResult().toObject(ProfileEntity.class);

                    if (profileEntity != null) {
                       //show your profile data
                    }
                } else {
                    Log.d(TAG, "No such document");
                }
            } else {
                Log.d(TAG, "get failed with ", task.getException());
            }
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...