Java/Android-JSON解析创建新的多消息聊天只会产生一条消息
我试图将一个JSON数组解析为多条消息——但是在我当前的实现中,数组中的每个后续消息都会覆盖msg的值,而不是为数组中的每个消息值创建一条新消息。我知道我需要在for循环中创建一条新消息,但我似乎不知道如何通过编程来实现 如有任何建议,我们将不胜感激 JSON: 爪哇:Java/Android-JSON解析创建新的多消息聊天只会产生一条消息,java,android,arrays,json,Java,Android,Arrays,Json,我试图将一个JSON数组解析为多条消息——但是在我当前的实现中,数组中的每个后续消息都会覆盖msg的值,而不是为数组中的每个消息值创建一条新消息。我知道我需要在for循环中创建一条新消息,但我似乎不知道如何通过编程来实现 如有任何建议,我们将不胜感激 JSON: 爪哇: private void populateMessages(JSONObject msgObj){ 对于(int i=0;i
private void populateMessages(JSONObject msgObj){
对于(int i=0;i
私有void populateMessages(JSONObject msgObj){
messages=ChatMessage.fromJson(msgObj);
mAdapter.clear();
mAdapter.addAll(消息);
mListView.invalidateViews();
mAdapter.notifyDataSetChanged();
}
来自JSON的公共静态ArrayList(JSONObject JSONObject){
ArrayList消息=新建ArrayList();
试一试{
JSONArray items=jsonObject.getJSONArray(“消息”);
对于(int i=0;i
将新对象移动到for loop
中,然后使用ArrayList
删除populatemessage中的for循环
在java中,更喜欢setter和getter
仅此而已。私有void populateMessages(JSONObject msgObj){
messages=ChatMessage.fromJson(msgObj);
mAdapter.clear();
mAdapter.addAll(消息);
mListView.invalidateViews();
mAdapter.notifyDataSetChanged();
}
来自JSON的公共静态ArrayList(JSONObject JSONObject){
ArrayList消息=新建ArrayList();
试一试{
JSONArray items=jsonObject.getJSONArray(“消息”);
对于(int i=0;i
将新对象移动到for loop
中,然后使用ArrayList
删除populatemessage中的for循环
在java中,更喜欢setter和getter
仅此而已。提示:Gson将帮助您完成此任务提示:Gson将帮助您完成此任务
{"messages":[{"message":"User has joined.","type":"agent","created":"2016-11-26 12:56:02","name":"Test User"},{"message":"Hello World?","type":"agent","created":"2016-11-26 12:56:05","name":"Test User"}]}
private void populateMessages(JSONObject msgObj) {
for (int i = 0; i < msgObj.length(); i++) {
messages = ChatMessage.fromJson(msgObj);
mAdapter.clear();
mAdapter.addAll(messages);
mListView.invalidateViews();
mAdapter.notifyDataSetChanged();
}
}
public static ChatMessage fromJson(JSONObject jsonObject) {
ChatMessage msg = new ChatMessage();
try {
JSONArray items = jsonObject.getJSONArray("messages");
for (int i = 0; i < items.length(); i++) {
JSONObject json_data = items.getJSONObject(i);
if(json_data.getString("message") != null)
msg.message = json_data.getString("message");
if(json_data.getString("type") != null)
msg.type = json_data.getString("type");
if(json_data.getString("name") != null)
msg.name = json_data.getString("name");
if(msg.message.equals("Waiting for user.")){
if(json_data.getString("created") != null)
msg.created = convertInitalTime(json_data.getString("created"));
}
else{
if(json_data.getString("created") != null)
msg.created = convertTime(json_data.getString("created"));
}
}
} catch (JSONException e) {
e.printStackTrace();
return null;
}
return msg;
}
private void populateMessages(JSONObject msgObj) {
messages = ChatMessage.fromJson(msgObj);
mAdapter.clear();
mAdapter.addAll(messages);
mListView.invalidateViews();
mAdapter.notifyDataSetChanged();
}
public static ArrayList<ChatMessage> fromJson(JSONObject jsonObject) {
ArrayList<ChatMessage> messages = new ArrayList<>();
try {
JSONArray items = jsonObject.getJSONArray("messages");
for (int i = 0; i < items.length(); i++) {
ChatMessage msg = new ChatMessage();
....
....
messages.add(msg);
}
}
return messages;
}