Java/Android-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

我试图将一个JSON数组解析为多条消息——但是在我当前的实现中,数组中的每个后续消息都会覆盖msg的值,而不是为数组中的每个消息值创建一条新消息。我知道我需要在for循环中创建一条新消息,但我似乎不知道如何通过编程来实现

如有任何建议,我们将不胜感激

JSON: 爪哇:
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;
}