如何在回收器视图Android上加载聊天历史记录



嗨,我正在开发诸如whatsapp之类的聊天应用程序。当用户像WhatsApp中的用户向下滚动时,我必须从API加载聊天历史记录。我获取数据并将其设置为适配器。但是历史记录在回收器视图的底部加载。我需要在每个滚动中将其添加到顶部。这是我的代码。请帮我。预先感谢。

                              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();
                }
            }

有一种方法可以通过编辑适配器类而不是活动来设置项目。我们必须添加诸如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);
}

我将适配器中的列表更改为messagelist.add(0,message)。它起作用。

public void add(Message message) {
    messageList.add(0,message);
    notifyItemInserted(messageList.size() - 1);
}

您可以在索引0

上插入历史记录消息

messageAdapter.add(0,messages);

每次迭代都将通过最后插入的消息替换第一条消息。

chatHistoyList.add(adapter.getCurrentChatList());
adapter.setData(chatHistoryList);
adapter.notifyDataSetChanged();
//This method has to be in adapter
public List<Chat> getCurrentChatList() {
         return currentChatList;
}

最新更新