【发布时间】:2018-12-08 05:47:58
【问题描述】:
我正在为我的聊天应用程序使用 socket.io。我有一个包含最后一条消息、用户名、时间的 ArrayList。每当一条新消息以 JSON 格式到达时,它应该检查 JSON 包含的用户名是否存在于 ArrayList 中。如果存在,则更新 ArrayList,否则添加 ArrayList。 这是我的代码:-
private Emitter.Listener handle1 = new Emitter.Listener() {
@Override
public void call(final Object... args) {
ChatLists.this.runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject)args[0];
try {
String sendername = data.getString("sender");
String lastMessage = data.getString("message");
String profileImage = data.getString("Profile");
String token = data.getString("fb_token");
chat_list chat_list = new chat_list(sendername,
profileImage, lastMessage, "0", "", "dummy", token);
if (chat_lists.size()==0){
chat_lists.add(chat_list);
}else {
for (int i=0;i<chat_lists.size();i++){
if (chat_lists.get(i).getContactname().equals(sendername)){
chat_lists.set(i,chat_list);
}else {
chat_lists.add(chat_list)
}
}
}
contactlistAdapter = new ContactlistAdapter(chat_lists);
recyclerView.setAdapter(contactlistAdapter);
contactlistAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
};
【问题讨论】:
-
那么你现在面临的问题是什么?
-
我得到了同一个项目的 2 个副本。
-
第一个副本没有被替换,第二个副本出现在最后一个右边?
-
是的,没错。