2014-01-20 118 views
0

我有一個web服務,當我調用web服務時,我得到了這個響應。根據android的順序排列數組?

[ 
    { 
     "ProjectID": 1, 
     "SLNO": 1, 
     "ID": 1, 
     "Type": "Text", 
     "Name": "First Name", 
     "**Order**": 1, 
     "Flag": "F" 
    }, 
    { 
     "ProjectID": 1, 
     "SLNO": 3, 
     "ID": 2, 
     "Type": "Text", 
     "Name": "Company", 
     "**Order**": 5, 
     "Flag": "F" 
    }, 
    { 
     "ProjectID": 1, 
     "SLNO": 4, 
     "ID": 4, 
     "Type": "Text", 
     "Name": "Personal Email", 
     "**Order**": 3, 
     "Flag": "F" 
    }, 
    { 
     "ProjectID": 1, 
     "SLNO": 2, 
     "ID": 8, 
     "Type": "Text", 
     "Name": "Last Name", 
     "**Order**": 2, 
     "Flag": "F" 
    } 
] 

現在我想排序這個完整的數組,取決於我得到這個數組內的順序?我怎樣才能做到這一點?

+0

我已經解析了JSON並得到了名稱和順序的值。 – user2699728

+0

你可以看看這個鏈接 http://stackoverflow.com/questions/12901742/android-how-to-sort-jsonarray-of-jsonobjects –

+1

如果您使用自己的API,然後嘗試排序數組服務器端使用OREDER BY查詢,如果沒有,然後在數組排序功能的Android端做... –

回答

1
array = JSONUtil.sort(array, new Comparator(){ 
       public int compare(Object a, Object b){ 
        JSONObject ja = (JSONObject)a; 
        JSONObject jb = (JSONObject)b; 
        return Integer.valueOf(ja.getString("**Order**")).compareTo(Integer.valueOf(jb.getString("**Order**"))); 
       } 
      }); 
+0

object1和object2下會出現什麼? – user2699728

0

首先,將這些數據添加到列表中,如ArrayList或HashMap。然後使用下面的代碼根據訂單對列表數據進行排序。

class HashMapComparator implements Comparator<HashMap<String, String>> { 
     private final String key; 

     public HashMapComparator(String key) { 
      this.key = key; 
     } 

     @Override 
     public int compare(HashMap<String, String> lhs, 
       HashMap<String, String> rhs) { 
      String firstValue = lhs.get(key); 
      String secondValue = rhs.get(key); 
      return firstValue.compareTo(secondValue); 
     } 
    } 

,並稱呼其爲:

Collections.sort(yourlistDTO, new HashMapComparator("order")); 
+0

它向我展示了Collections.sort()方法的classcast異常 – user2699728

+0

你傳遞了​​什麼參數? – Vijju

+0

我已經在arraylist中添加了json數組。然後稱這個功能。 – user2699728