如何更改JSON消息的顺序?

时间:2015-07-10 10:14:31

标签: android json parsing listview messages

我对来自服务器的消息有这样的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?但是怎么样? 我该怎么做才能做到这一点? 抱歉我的英语:)

3 个答案:

答案 0 :(得分:0)

ArrayList

设置反向顺序

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

JSON mList 设置数据:

如果您想在逆序上获得列表,请将以下代码放入。

Collections.reverse(mList);

希望它会对你有所帮助。

答案 1 :(得分:0)

一旦你在JsonArray中获得了“items”数组,那么你应该获得像

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

答案 2 :(得分:0)

  

我假设您要根据回复中的date字段对邮件列表进行排序。

从此JSON响应中创建ArrayList MyClass,例如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());

我希望这会对你有所帮助。