簡體   English   中英

Android:如何只顯示當前登錄用戶的數據?

[英]Android: How do I display only the data of the user who is currently logged in?

我通過 Firebase 進行了注冊。 數據是這樣存儲的:

在此處輸入圖像描述

每個用戶都可以填寫表格,表格中的數據會顯示在 RecyclerView 的單獨屏幕上。 問題是現在用戶沒有以任何方式分開。 這是用戶記錄的樣子:

在此處輸入圖像描述

如何只顯示由特定用戶創建的條目? 我需要通過用戶 ID 准確檢查。 現在我 output 這樣的數據:

protected void onCreate(Bundle savedInstanceState) {

   ...

   dRef = FirebaseDatabase.getInstance().getReference().child("User Data");
        dRef.addListenerForSingleValueEvent(valueEventListener);

        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        userData = new ArrayList<UserData>();
}

ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot dataSnapshot1: dataSnapshot.getChildren()) {
                UserData uData = dataSnapshot1.getValue(UserData.class);
                userData.add(uData);
            }
            userAdapter = new UserAdapter(MainActivity.this, userData);
            recyclerView.setAdapter(userAdapter);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {}
};

我怎樣才能做到這一點? 各地的ID都不一樣。

升級版:

創建用戶:

mAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            User user = new User(fullName, age, email, phone);
                            FirebaseDatabase.getInstance().getReference("Users")
                                    .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                                    .setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if (task.isSuccessful()) {
                                        Toast.makeText(RegisterUser.this, "Successful", Toast.LENGTH_SHORT).show();
                                        progressBar.setVisibility(View.GONE);
                                    } else {
                                        Toast.makeText(RegisterUser.this, "Failed", Toast.LENGTH_SHORT).show();
                                        progressBar.setVisibility(View.GONE);
                                    }
                                }
                            });
                        } else {
                            Toast.makeText(RegisterUser.this, "Failed", Toast.LENGTH_SHORT).show();
                            progressBar.setVisibility(View.GONE);
                        }
                    }
                });

用戶:

public class User {
    public String fullName, age, email, phone;
    public User() {

    }

    public User(String fullName, String age, String email, String phone) {
        this.fullName = fullName;
        this.age = age;
        this.email = email;
        this.phone = phone;
    }
}

用戶數據:

public class UserData {

    String id, userName, userLastName, userOtchestvo, userAppeal, userOrganisation, userPhone, userEmail, userVK, userFB;

    public UserData(String id, String userName, String userLastName, String userOtchestvo, String userAppeal, String userOrganisation, String userPhone, String userEmail, String userVK, String userFB) {
        this.id = id;
        this.userName = userName;
        this.userLastName = userLastName;
        this.userOtchestvo = userOtchestvo;
        this.userAppeal = userAppeal;
        this.userOrganisation = userOrganisation;
        this.userPhone = userPhone;
        this.userEmail = userEmail;
        this.userVK = userVK;
        this.userFB = userFB;
    }

    public UserData() {}

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    ...

單擊按鈕,我將數據添加到 Firebase:

add_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String userId, userName, userLastName, userOtchestvo, userAppeal, userOrganisation, userPhone, userEmail, userVK, userFB;
                userId = database.push().getKey();
                userName = title_input.getText().toString();
                userLastName = author_input.getText().toString();
                userOtchestvo = pages_input.getText().toString();
                userAppeal = appeal_input.getText().toString();
                userOrganisation = organisation_input.getText().toString();
                userPhone = phone_input.getText().toString();
                userEmail = email_input.getText().toString();
                userVK = vk_input.getText().toString();
                userFB = fb_input.getText().toString();

                UserData userData = new UserData(userId, userName, userLastName, userOtchestvo, userAppeal, userOrganisation, userPhone, userEmail, userVK, userFB);
                database.child(userId).setValue(userData);
            }
        });
database.push().getKey()

這不會給你用戶 ID,這只會給你一個不等於用戶 ID 的隨機唯一密鑰。

所以改為這樣做。

userId = FirebaseAuth.getInstance().getCurrentUser().getUid();

這將為您提供當前登錄用戶的userId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM