我有一个ListView,它显示时间和日期以及与该问题无关的其他信息。它们存储在ArrayList Hashmap中。当加载到ListView中时,它们默认由那里的ID组织,相反,它们需要按日期和时间组织。这是我的代码到目前为止。ArrayList <HashMap <String,Object>按ListView单元格的键值排序
public void loadListView() {
productsList = new ArrayList<HashMap<String, Object>>();
lv = (ListView) getActivity().findViewById(R.id.listview);
lv.setTextFilterEnabled(true);
DatabaseHandler db = new DatabaseHandler(getActivity());
List<SalesCall> salescall = db.getAllSalescalls();
lv = (ListView) getActivity().findViewById(R.id.listview);
for (SalesCall cn : salescall) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(KEY_ID, cn.getID());
map.put(KEY_NAME, cn.getDoctor());
map.put(KEY_TIME, cn.getScheduled_time());
map.put(KEY_DATE, cn.getScheduled_Date());
map.put(KEY_ALL, cn.getAccount() + ":" + cn.getDoctor());
productsList.add(map);
}
adapter = new ExtendedSimpleAdapter(
getActivity(), productsList,
R.layout.listview_item_layout_salescall,
new String[]{KEY_ID, KEY_NAME, KEY_TIME, KEY_DATE, KEY_ALL},
new int[]{R.id.id, R.id.fname, R.id.Time, R.id.Date, R.id.All});
// updating listview
lv.setAdapter(adapter);
db.close();
}
我该如何对数据进行排序呢?
编辑: 可比代码
@Override
public int compare(SalesCall lhs, SalesCall rhs) {
if (lhs.getScheduled_Date() == null || rhs.getScheduled_Date() == null)
return 0;
return lhs.getScheduled_Date().compareTo(rhs.getScheduled_Date());
}
这是一个很好的解决方案,从来没有真正这样想过。我感到很傻很简单。谢谢。 – M0NKEYRASH 2014-09-07 19:11:50