我正在开发一个会议应用程序,我们希望会话首先按时间分组,然后按房间位置分组.我已经成功地在我的ExpandableListActivity中按一个或另一个排序,但是对主要和次要排序都没有成功.
建立
>自定义内容提供程序(扩展ContentProvider)
>自定义列表适配器(扩展Baseexpandablelistadapter)
>自定义列表活动(扩展ExpandableListActivity)
询问
Cursor cursor = context.getContentResolver() .query(uri,ScheduleData.PROJECTION,null,ScheduleData.soRT_ORDER);
排序
public static final String SORT_ORDER = TimeSlots.QUALIFIED_TIMESTART + " ASC"; // timeslots.timestart
失败的主要&二级排序
public static final String SORT_ORDER = TimeSlots.QUALIFIED_TIMESTART + " ASC," + Locations.QUALIFIED_NAME + " ASC"; // timeslots.timestart ASC,locations.name ASC public static final String SORT_ORDER = TimeSlots.QUALIFIED_TIMESTART + "," + Locations.QUALIFIED_NAME + " ASC"; // timeslots.timestart,locations.name ASC
第二个条款似乎对排序没有影响.这是ExpandableListActivity的限制吗?我应该以不同方式指定多个排序顺序项吗
解决方法
事实证明,类中有一个比较器覆盖了ORDERBY子句中指定的排序顺序.当使用上面的ORDERBY子句而没有比较器时,我得到了所需的排序.你可以这样做,但我正在杀死额外的代码并选择ORDERBY子句.
比较器路径:
// Sort children Collections.sort(group.children,CHILD_COMParaTOR); // Specify sort by location static final Comparator<Child> CHILD_COMParaTOR = new Comparator<Child>() { @Override public int compare (Child child1,Child child2) { return child1.location.toLowerCase().compareto(child2.location.toLowerCase()); } };