簡體   English   中英

Android Studio - 列出來自 Firebase 的評論

[英]Android Studio - listing reviews from Firebase

當談到 Android Studio 時,我還是個新手,但是我一直在看很多可以注冊用戶等的教程。但是我現在希望用戶能夠留下存儲在 Firebase 中的評論。 我創建了一個 RecyclerView,這樣我就可以查看所有用戶留下的評論,但是我遇到了一個問題,當我發表評論時,它會刪除 Firebase 中的當前評論,所以總是只有一個評論。 以下是我注冊評論到 Firebase 的代碼:

public void registerReview(){
        String email = emailR.getText().toString().trim();
        String message = messageR.getText().toString().trim();


        Review review = new Review(email, message);
        FirebaseDatabase.getInstance().getReference("Review")
                .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                .setValue(review).addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if(task.isSuccessful()){
                    Toast.makeText(RegisterReview.this, "Thanks for your feedback!", Toast.LENGTH_LONG).show();
                    startActivity(new Intent(RegisterReview.this, MainMenu.class));
                }
                else{
                    Toast.makeText(RegisterReview.this, "Failed to Register", Toast.LENGTH_LONG).show();
                }
            }
        });

我將如何更改這一點,以便在不刪除以前的情況下存儲每條評論? 這是由於.setValue 而發生的嗎?

似乎您每次都在參考 userId 存儲數據,這是它更新現有記錄的原因。

嘗試這個 -

    String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
    String uniqueID = UUID.randomUUID().toString();

    Review review = new Review(userID ,email, message);
    FirebaseDatabase.getInstance().getReference("Review")
    .child(uniqueID)
            .setValue(review).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if(task.isSuccessful()){
                Toast.makeText(RegisterReview.this, "Thanks for your feedback!", Toast.LENGTH_LONG).show();
                startActivity(new Intent(RegisterReview.this, MainMenu.class));
            }
            else{
                Toast.makeText(RegisterReview.this, "Failed to Register", Toast.LENGTH_LONG).show();
            }
        }
    });

並根據userId獲取記錄

當您使用時:

.setValue(review)

根據DocumentReference#set(Object data)方法的官方文檔:

覆蓋此 DocumentReference 引用的文檔。

這就是為什么如果您使用相同的引用,您將覆蓋數據。 如果您不希望這樣,那么您應該考慮使用DocumentReference#update(Map<String, Object> data)

更新此 DocumentReference 引用的文檔中的字段。

暫無
暫無

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

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