【发布时间】:2019-04-19 11:09:44
【问题描述】:
我正在构建一个移动消息应用程序,
我想创建一个聊天组,用户使用复选框选择成员,然后将所选用户的标识符保存在一个列表中,该列表将保存在 Firebase 数据库中,
当我想将用户保存到数据库时我的应用程序崩溃的问题
我的日志猫:
com.google.firebase.database.DatabaseException:反序列化时需要一个列表,但得到一个类 java.lang.String
代码:
private void CreateNewGroup(final String groupName) {
groupNameRef = FirebaseDatabase.getInstance().getReference().child("Groups");
DatabaseReference push = groupNameRef.push();
String push_id = push.getKey();
assert push_id != null;
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Groups").child(push_id);
Map<String, String> hasMap = new HashMap<>();
hasMap.put("groupName", groupName);
hasMap.put("Admin", firebaseUser.getUid());
hasMap.put("members", "");
ref.setValue(hasMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(SelectGroupActivity.this, "Saved" + groupName, Toast.LENGTH_SHORT).show();
}
});
DatabaseReference ref2 = FirebaseDatabase.getInstance().getReference("Groups" + "/" +
push_id + "/" + "members");
SharedPreferences myPref2 = SelectGroupActivity.this.getSharedPreferences("data2", Context.MODE_PRIVATE);
Set<String> set1 = myPref2.getStringSet("key2", null);
assert set1 != null;
ArrayList<String> namesList = new ArrayList<>(set1);
ref2.setValue(namesList).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task)
{
if(task.isSuccessful())
{
Toast.makeText(SelectGroupActivity.this, "Success", Toast.LENGTH_SHORT).show();
}
}
});
}
还有我的模型课
import java.util.List;
public class Groups
{
private String groupName;
private List<String> members;
private String Admin;
public Groups() {}
public Groups(String groupName, List<String> members, String Admin) {
this.groupName = groupName;
this.members = members;
this.Admin = Admin;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public List<String> getMembers() {
return members;
}
public void setMembers(List<String> members) {
this.members = members;
}
public String getAdmin() {
return Admin;
}
public void setAdmin(String admin) {
Admin = admin;
}
}
数据库:
【问题讨论】:
标签: android firebase firebase-realtime-database