2015-07-10 66 views
-3

我有来自服务器的消息,例如JSON响应:如何更改JSON消息的顺序?

response: { 
 
count: 74246, 
 
items: [{ 
 
    id: 343194, 
 
    body: 'Message 3', 
 
    user_id: 123, 
 
    from_id: 123, 
 
    date: 1436513626, 
 
    read_state: 1, 
 
    out: 0 
 
}, { 
 
    id: 343190, 
 
    body: 'Message 2', 
 
    user_id: 123, 
 
    from_id: 321, 
 
    date: 1436513502, 
 
    read_state: 1, 
 
    out: 1 
 
}, { 
 
    id: 343187, 
 
    body: 'Message 1', 
 
    user_id: 123, 
 
    from_id: 123, 
 
    date: 1436513198, 
 
    read_state: 1, 
 
    out: 0 
 
}] 
 
}

我把它放入ListView和我有这样的顺序:

  • 消息3
  • 消息2
  • 消息1

但我想下一个订单:

  • 消息1
  • 消息2
  • 消息3

因此,这意味着最新的消息应该是从底部到达顶点。可能我应该从底部构建listview?但是如何? 我该怎么做才能做到这一点? 很遗憾,我的英语:)

+0

a)你是如何创建你的列表视图? b)谁在生成JSON? – Amadan

+0

prolly您需要对数据进行排序... – Selvin

+0

是否要根据日期或消息对此进行排序? –

回答

0

坐落在的ArrayList倒序:在

ArrayList<Your_Model> mList = new ArrayList<Your_Model>(); 

组数据mListJSON

每当你想要得到列表逆序,放在下面的代码。

Collections.reverse(mList); 

希望它能帮助你。

0

一旦你在你的JsonArray“项目”数组,那么你应该得到这样的数据,

 for(int i=array.length()-1; i<=0; i--){ 
     // get your messages from "items" array. 
     } 
0

我假设你要排序的基础上在date领域信息列表响应。

从这个JSON响应创建的MyClass一个ArrayList,说mylist并且如下创建一个比较器类:

public class MyComparator implements Comparator<MyClass> { 
    @Override 
    public int compare(MyClass lhs, MyClass rhs) { 
     if (ldate.getDate() > rdate.getDate()) { 
      return 1; 
     } else if (ldate.getDate() < rdate.getDate()) { 
      return -1; 
     } 
     return 0; 
    } 
} 

MyClass是一个模型类为上面JSON响应。

使用此Comparator类如下面你ArrayList

Collections.sort(mylist,new MyComparator()); 

我希望这会帮助你。