我正在尝试建立一个简单的聊天界面。当用户单击时,enter
他们的消息将发送到服务器,添加到数据库,并同时插入到MessageAdapter
客户端设备上的消息中,从而使其出现在他们的屏幕上。
对于非用户,来自用户的消息是右对齐的,反之亦然。
当用户发送一条消息时,与所有消息上移一个位置相反,文本上移而不是实际消息对象上移。
我正在尝试让用户发送一条消息,并且所有先前的消息都有效地向上移动,以便新消息可以显示在下面。
最初,非用户消息是,Hello但是在我发送用户消息之后,非用户下方的消息Hey取代了它。
这是我的代码MessageAdapter:
public class MessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
List<Message> data= Collections.emptyList();
List<Integer> message_type= Collections.emptyList();
// create constructor to initialize context and data sent from MainActivity
public MessageAdapter(List<Message> data, List<Integer> message_type) {
this.data=data;
this.message_type=message_type;
}
public void addItem(Message item, int message_type){
this.data.add(item);
this.message_type.add(0, message_type);
}
// Inflate the layout when ViewHolder created
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
switch (i) {
case 0:
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.message_non_user, viewGroup, false);
return new ViewHolder0(v);
case 2:
View q = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.message_user, viewGroup, false);
return new ViewHolder1(q);
}
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.message_non_user, viewGroup, false);
然后,这是代码send-message action:
Message user_input = new Message();
user_input.message = chat_input.getText().toString();
messageAdapter.addItem(user_input, 0);
messageAdapter.notifyItemInserted(messageAdapter.getItemCount()+1);
MessagesRecyclerview.scrollToPosition(messageAdapter.getItemCount() - 1);
messageAdapter.notifyDataSetChanged();
chat_input.getText().clear();
谢谢你的帮助 :)
慕慕森
相关分类