如何在回收站视图android上加载聊天记录

时间:2017-06-08 09:15:35

标签: android performance listview

您好我正在开发像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();
                }

            }

4 个答案:

答案 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);
}