繁体   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