2015-07-10 111 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()); 

我希望這會幫助你。