您好我正在开发像WhatsApp这样的聊天应用程序。我必须在用户向下滚动时从api加载聊天记录,就像在whatsapp中一样。我获取数据并将其设置为适配器。但历史是在回收者视图的底部加载。我需要在每个卷轴上添加它。这是我的代码。请帮我。提前谢谢。
if (Status.equals("1")) {
historyList = resp.getHistory();
Log.i("history size",String.valueOf(resp.getHistory().size()));
String historysize = String.valueOf(resp.getHistory().size());
Message message = new Message();
for (int i = 0; i < resp.getHistory().size(); i++) {
String fromusertoken = String.valueOf(resp.getHistory().get(i).getFromUserToken());
String txtmsg = resp.getHistory().get(i).getMessage();
String username = String.valueOf(resp.getHistory().get(i).getFromUserName());
if (fromusertoken.equals(user_token)) {
Message messages = new Message();
messages.setUser_token(fromusertoken);
messages.setUsername(username);
messages.setIsMine(true);
messages.setMessage(txtmsg);
messageAdapter.add(messages);
}
else {
Message messages = new Message();
messages.setUser_token(fromusertoken);
messages.setUsername(username);
messages.setIsMine(false);
messages.setMessage(txtmsg);
messageAdapter.add(messages);
}
}
messageAdapter.notifyDataSetChanged();
onItemsLoadComplete();
Toast.makeText(Single_chat.this, msg, Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(Single_chat.this, msg, Toast.LENGTH_SHORT).show();
}
}
} else {
Toast.makeText(Single_chat.this, "No Response", Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:1)
我将适配器中的列表更改为messagelist.add(0,message)
。它奏效了。
public void add(Message message) {
messageList.add(0,message);
notifyItemInserted(messageList.size() - 1);
}
答案 1 :(得分:0)
您可以在索引0
处插入历史消息 messageAdapter.add(0,messages);
每次迭代它都将用最后插入的消息替换第一条消息。
答案 2 :(得分:0)
chatHistoyList.add(adapter.getCurrentChatList());
adapter.setData(chatHistoryList);
adapter.notifyDataSetChanged();
//This method has to be in adapter
public List<Chat> getCurrentChatList() {
return currentChatList;
}
答案 3 :(得分:0)
有一种方法可以通过编辑适配器类而不是活动来将项目设置在顶部。我们必须添加项目列表,如messagelist.add(0,message)
。现在才发现。对于常规聊天,您必须像messagelist.add(message)
一样正常添加。这将在底部添加项目。希望这对其他人有用。
public void add(Message message) {
messageList.add(message);
notifyItemInserted(messageList.size() - 1);
}
public void add(int i,Message message) {
messageList.add(0,message);
notifyItemInserted(messageList.size() - 1);
}