![](/img/trans.png)
[英]ArrayList<HashMap<String,String>> to JSON object Java
[英]Unable to Sort ArrayList<HashMap<String, Object>> by Single HashMap object field in Java Android
我正在將數據添加到ArrayList <HashMap <String,Object >> contactList;
我想按他們的單個字段對contactList進行排序。
我正在添加這樣的數據:
HashMap<String, Object> docs = new HashMap<>();
docs.put("name", key);
docs.put("speciality", speci);
docs.put("status", status); // sort by this field , if contains online it should appear first .
docs.put("picture", bp);
docs.put("education", educate);
docs.put("experience", experi);
docs.put("rating", ft);
contactList.add(docs);
數據被添加到循環中,之后我將contactList分配給simpleAdapter進行listview。
現在,我希望我的聯系人列表比較“狀態”字段,如果狀態為“聯機”,則首先顯示;或者,如果所有狀態為脫機,則什么也不顯示;
我如何對我的數據進行排序,我稍后需要在listView中使用此數據,以便首先在listview中顯示在線狀態聯系人。 任何幫助,將不勝感激。 謝謝
您可以通過anonymous inner class
定義一個比較器,並根據status
字段的值進行排序(假設它始終是String
,例如:
contactList.sort(new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
if(null != o1.get("status") && null != o1.get("status")){
return o2.get("status").toString().compareTo(o1.get("status").toString());
}else if(null != o1.get("status")){
return 1;
}else{
return -1;
}
}
});
更新資料
如果list.sort
與當前API版本不兼容,則可以使用Collections.sort
,例如:
Collections.sort(contactList, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
if(null != o1.get("status") && null != o1.get("status")){
return o2.get("status").toString().compareTo(o1.get("status").toString());
}else if(null != o1.get("status")){
return 1;
}else{
return -1;
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.