Can't convert object of type java.lang.String to type com.example.chatden.model.ChatModel
Пишу чат, все сообщения выводиться из firebase, но при нажатии на кнопку начать чат стало выдавать такую ошибку (Can't convert object of type java.lang.String to type com.example.chatden.model.ChatModel). Почему мне выдает такую ошибку и как мне её устранить? Вот код.
public class ChatOnline extends AppCompatActivity {
private FirebaseDatabase database;
private DatabaseReference myRef;
private DatabaseReference room;
private FirebaseUser currentUser;
private FirebaseAuth mAuth;
private Toolbar toolbar;
private RecyclerView recyclerMessage;
private Button sendBtn;
private EditText inputMessage;
private String messageUser;
private static int MAX_LENGTH_MESSAGE = 20;
private Boolean searchInterlocutor = false;
public List<ChatModel> messages;
private ChatAdapter chatAdapter;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.chat_online_menu, menu);
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat_online);
database = FirebaseDatabase.getInstance();
myRef = database.getInstance().getReference("Messages");
currentUser = FirebaseAuth.getInstance().getCurrentUser();
messages = new ArrayList<>();
toolbar = (Toolbar) findViewById(R.id.toolbarChat);
setSupportActionBar(toolbar);
recyclerMessage = (RecyclerView) findViewById(R.id.recyclerMessage);
recyclerMessage.setLayoutManager(new LinearLayoutManager(ChatOnline.this));
chatAdapter = new ChatAdapter(messages);
recyclerMessage.setAdapter(chatAdapter);
inputMessage = (EditText) findViewById(R.id.inputMessage);
sendBtn = (Button) findViewById(R.id.btnSend);
sendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
messageUser = inputMessage.getText().toString();
if(messageUser.equals("")){
Toast.makeText(ChatOnline.this, "Введите ваше сообщение",Toast.LENGTH_SHORT).show();
return;
}
if(messageUser.length()>= MAX_LENGTH_MESSAGE){
Toast.makeText(ChatOnline.this, "Максимальная длина сообщения 200 символов",Toast.LENGTH_SHORT).show();
return ;
}
myRef.push().setValue(messageUser);
inputMessage.setText("");
}
});
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
// String msg = snapshot.getValue().toString();20
// messages.add(msg);
String msg = snapshot.getValue(ChatModel.class).toString();
messages.add(snapshot.getValue(ChatModel.class));
chatAdapter.notifyDataSetChanged();
recyclerMessage.smoothScrollToPosition(messages.size());
}
});
}
}
Класс ChatModel
public class ChatModel {
public String message;
public String loginChat;
public String urlImage;
public ChatModel(Context context, String message,String loginChat, String urlImage) {
this.message = message;
this.loginChat = loginChat;
this.urlImage = urlImage;
}
public ChatModel (){
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getLoginChat() {
return loginChat;
}
public void setLoginChat(String loginChat) {
this.loginChat = loginChat;
}
public String getUrlImage() {
return urlImage;
}
public void setUrlImage(String urlImage) {
this.urlImage = urlImage;
}
}
Класс ChatAdapter
public class ChatAdapter extends RecyclerView.Adapter<ViewHolderMesssages> {
public List<ChatModel> messagesAdapter;
public Context mContext;
//public ArrayList<String> messagesAdp;
public LayoutInflater inflater;
public TextView loginChat;
public FirebaseDatabase database;
public DatabaseReference reference;
public String currentUserID;
private FirebaseAuth mAuth;
public ChatAdapter() {
}
public ChatAdapter( List<ChatModel> messagesAdapter) {
this.messagesAdapter = messagesAdapter;
this.loginChat = loginChat;
}
@NonNull
@Override
public ViewHolderMesssages onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_messsage,parent,false);
return new ViewHolderMesssages(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolderMesssages holder, int position) {
ChatModel msg = messagesAdapter.get(position);
}
@Override
public int getItemCount() {
return messagesAdapter.size();
}
}
Класс ViewHolderMesssages
public class ViewHolderMesssages extends RecyclerView.ViewHolder {
public TextView message;
public TextView loginChat;
public CircleImageView photoUser;
public ViewHolderMesssages(@NonNull View itemView) {
super(itemView);
message = itemView.findViewById(R.id.message_text);
loginChat = itemView.findViewById(R.id.loginChat);
photoUser = itemView.findViewById(R.id.photoUserChat);
}
}