2014-01-20 119 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