android - 评论的名称和时间戳 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)评论RecylerViewAdapter(https://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)
这是我的数据库的屏幕截图:
-Kxzyb5JsUPhsMQAb84X
是我的数据库的根- 评论是每个帖子存储所有评论的地方
- -
LSv6lXZml-Cf0GX3i5q
随机生成的孩子存储其他内容,如时间戳、用户 ID 和内容
这是我手机的屏幕截图,显示了评论的错误顺序:
解决方案
推荐阅读
- oracle - 如何在两个 Oracle 数据库实例之间建立集群
- mongodb - hotChocolate 中有没有办法记录在 IQueryable 上执行的查询
- java - 如何在 Android 的 OneSignal 中订阅具有特定主题的用户?
- c# - 图表布局不正确
- excel - Excel 到 PDF 报告:单元格格式为百分比
- linux - sbt 下载启动器失败
- sql - 从 Google Ads BigQuery 数据传输中提取/取消嵌套数组
- windows - 当 MB_ICONWARNING 与 MB_OK 结合使用时,MessageBox API 会导致访问冲突和崩溃
- stream - 在 Flink 上重新调整水印
- ios - 可设计按钮不显示资产文件夹中的图像