此问题/错误的根本原因是什么?怎么解决?我的数据模型结构不合理吗?或者我是否提出了错误的查询?
//添加新评论
String comment = medit.getText().toString();
Comment newComment = new Comment(user,comment,postKey);
db.child("Post-Comments").child(postKey).push().setValue(newComment);
//检索帖子中的所有评论 //使用FirebaseRecyclerView和片段
DatabaseReference mRef = db.child("Post-Comments").child(postKey).getRef();
adapter = new FirebaseRecyclerAdapter<Comment, myViewHolder> (Comment.class,
R.layout.comment_list_layout,myViewHolder.class, mRef)
{
@Override
protected void populateViewHolder(myViewHolder viewHolder,
Comment model, int position) {
viewHolder.bindToComments(model);
}
};
rlm2 = new LinearLayoutManager(getActivity());
rv2.setLayoutManager(rlm2);
rv2.setAdapter(adapter);
//评论类
public class Comment {
public String comment;
public String reactUserId;
public Map<String,String> created_on;
public String postKey;
public Comment() {
}
public Comment(String reactUserId, String comment, String postKey) {
this.reactUserId = reactUserId;
this.postKey = postKey;
this.comment = comment;
this.created_on = ServerValue.TIMESTAMP;
}
public Map<String,Object> toMap(){
Map<String,Object> values = new HashMap<>();
values.put("userId",reactUserId);
values.put("postKey",postKey);
values.put("comment",comment);
values.put("created_on",created_on);
return values;
}
}// more getter and setters
// Stacktrace
10745-10745/com.dhiraj.firebaseapp E/AndroidRuntime: FATAL EXCEPTION: main
com.google.firebase.database.DatabaseException:
Expected a Map while deserializing, but got a class java.lang.Long
//来自Firebase DB的JSON
{
"Post-Comments" : {
"-KPE1qy6FgcwOnb1YXRw" :
"-KPE1zMFviLJvEKxexB7" : {
"AUTHOR" : "Dheeraj",
"comment" : "the first time I am not sure if you have any questions please ",
"created_on" : 1471278741281,
"postKey" : "-KPE1qy6FgcwOnb1YXRw",
"reactUserId" : "Dheeraj"
},
"-KPE221Xk5t9aMJfYoKD" : {
"AUTHOR" : "Dheeraj",
"comment" : "the first time I am not sure if you have any questions please ",
"created_on" : 1471278756332,
"postKey" : "-KPE1qy6FgcwOnb1YXRw",
"reactUserId" : "Dheeraj"
}
}
},
"Posts" : {
"-KPE1qy6FgcwOnb1YXRw" : {
"created on" : 1471278706910,
"desc" : "the only one who has been sent to you and your family and friends are invited to view the full image to open ",
"title" : "the following link ",
"userId" : "Dhiraj"
},
"-KPE1vlYc5vF7AyL2OHL" : {
"created on" : 1471278726738,
"desc" : "hi I was thinking that it will take place at all and all the best way is to have ",
"title" : "good afternoon ",
"userId" : "Dhiraj"
}
},
}
答案 0 :(得分:7)
mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference("Post-Comments")
Query queryRef = mFirebaseDatabaseReference.orderByKey();
queryRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot != null && dataSnapshot.getValue() != null) {
Log.e("Count ", "" + dataSnapshot.getChildrenCount());
Map<String, Object> objectMap = (HashMap<String, Object>)
dataSnapshot.getValue();
ArrayList<ItemsReceived> itemsReceivedList = new ArrayList<>();
for (Object obj : objectMap.values()) {
if (obj instanceof Map) {
Map<String, Object> mapObj = (Map<String, Object>) obj;
ItemsReceived itemsReceived = new ItemsReceived();
itemsReceived.setAccount((String) mapObj.get("AUTHOR"));
itemsReceived.setAdded((long) mapObj.get("comment"));
itemsReceivedList.add(itemsReceived);
Log.e(TAG, "Data is" + itemsReceived.getAdded());
}
}
itemsRecievedListAdapter = new ItemsRecievedListAdapter(MainActivity.this, itemsReceivedList);
mRecyclerView.setAdapter(itemsRecievedListAdapter);
//
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});`
在必要时替换我的变量我只是想说明一点而不是完全解决...我希望它有所帮助