Skip to content Skip to sidebar Skip to footer

Android - Firebase - Failed To Convert Value Of Type Java.util.hashmap To String

Aim Save data within the Group Chat node Current Database Tree Within the Group Chats node, the user's messages will be sent and stored within the user's selected group chat. As

Solution 1:

Branching of your desired database is unnecessary. You are creating an unnecessary level using UID of users. Instead, merge this layer down, i.e. combine uid, message and name. You can then use someRef.orderByKey("uid").equalTo("<user_uid>") in case you need specific user's records within that path, for example chat messages.

So, create a class called ChatMessage:

publicclassChatMessage {

    privateString uid;
    privateString name;
    privateString message;
    privateLong creationTime;

    publicChatMessage() {
        // Default constructor required for calls to DataSnapshot.getValue(ChatMessage.class)
    }

    publicChatMessage(String uid, String name, String message) {
        this.uid = uid;
        this.name = name;
        this.message = message;
    }

    publicStringgetUid() {
        return uid;
    }

    publicvoidsetUid(String uid) {
        this.uid = uid;
    }

    publicStringgetName() {
        return name;
    }

    publicvoidsetName(String name) {
        this.name = name;
    }

    publicStringgetMessage() {
        return message;
    }

    publicvoidsetMessage(String message) {
        this.message = message;
    }

    public java.util.Map<String, String> getCreationTime() {
        returnServerValue.TIMESTAMP;
    }

    @ExcludepublicLonggetCreationTimeLong() {
        return creationTime;
    }

    publicvoidsetCreationTime(Long creationTime) {
        this.creationTime = creationTime;
    }
}

Then update your code as follows:

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);

    chatGroupName = getIntent().getStringExtra(CHAT_GROUP_NAME);
    userKey = getIntent().getStringExtra(USER_KEY);
    user = getIntent().getParcelableExtra(USER);

    jChatToolbar = (Toolbar) findViewById(R.id.allUSersToolBar);
    jChatMessageText = (EditText) findViewById(R.id.chatMessageText);
    jChatSendTextBtn = (ImageButton) findViewById(R.id.chatSendTextBtn);

    jChatSendTextBtn.setOnClickListener(newView.OnClickListener() {
        @OverridepublicvoidonClick(View view) {
            sendMessage();
        }
    });
}

privatevoidsendMessage() {
    String userMessage = jChatMessageText.getText().toString();
    chatGroupRef = FirebaseDatabase.getInstance().getReference().child("Group Chats").child(chatGroupName);

    if (!TextUtils.isEmpty(userMessage)) {
        String newChatMessageKey = chatGroupRef.push().getKey();
        ChatMessage newChatMessage = newChatMessage(userKey, user.getName(), userMessage);
        chatGroupRef.child(newChatMessageKey).setValue(newChatMessage);
    }
}

Post a Comment for "Android - Firebase - Failed To Convert Value Of Type Java.util.hashmap To String"