首页 > 解决方案 > 评论的名称和时间戳 Firebase 数据库的顺序不正确

问题描述

我的应用程序的评论部分工作不正常,孩子们的名字和时间戳混淆了,他们里面的内容顺序正确,这是我在 Pastebin 链接中的所有代码(如果有必要查看整个代码),我还提供了我认为问题所在的块。

1) CommentAdapter.java Activity ( https://pastebin.com/m7LHDUDF ) 注意这段代码:

private void getHandleName(final ViewHolder viewHolder) {
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
    Log.d(TAG, "getHandleName: checking comment userID" + viewHolder.comment.getUser_id());
    Query query;
    query = reference
            .child("data")
            .child("-Kxzyb5JsUPhsMQAb84X")
            .child("users")
            .orderByChild("user_id")
            .equalTo(viewHolder.comment.getUser_id());

    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
                viewHolder.handleName.setText(singleSnapshot.getValue(User.class).getHandlename());
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

2)评论RecylerViewAdapterhttps://pastebin.com/Tb7L9EVD

 private void getHandleName(final CommentViewHolder viewHolder, Comment comment) {
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
    Log.d(TAG, "getHandleName: checking comment userID" + comment.getUser_id());
    Query query = reference
            .child("data")
            .child("-Kxzyb5JsUPhsMQAb84X")
            .child("users")
            .orderByChild("user_id")
            .equalTo(comment.getUser_id());


    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
                viewHolder.handleName.setText(singleSnapshot.getValue(User.class).getHandlename());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

3)添加注释的代码块: `private void addComment() {

    if (commentText.getText().toString().isEmpty()) {
        Toast.makeText(ViewPostActivity.this, "Please enter your comment", Toast.LENGTH_SHORT).show();
    } else {
        String currentUserID = FirebaseAuth.getInstance().getCurrentUser().getUid();
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
        String commentID = reference.push().getKey();

        Comment comment = new Comment();
        comment.setCaption(commentText.getText().toString());
        comment.setDate_created(System.currentTimeMillis());
        comment.setUser_id(currentUserID);

        reference.child("data").child("-Kxzyb5JsUPhsMQAb84X").child("comments").child(postID).child(commentID).setValue(comment);
        setNumComment();
        setNumPointCurrentUser();
        setNumPointUser();
        setNumPointPost();
    }
}`

4)**最后,我认为可以的评论模型Activity**(https://pastebin.com/VaYV3Gv3

这是我的数据库的屏幕截图:

  1. -Kxzyb5JsUPhsMQAb84X是我的数据库的根
  2. 评论是每个帖子存储所有评论的地方
  3. -LSv6lXZml-Cf0GX3i5q随机生成的孩子存储其他内容,如时间戳、用户 ID 和内容

数据库

这是我手机的屏幕截图,显示了评论的错误顺序:

手机截图

标签: androidfirebasefirebase-realtime-databaseserver

解决方案


推荐阅读