我正在开发一个会议应用程序,我们希望会话首先按时间分组,然后按房间位置分组.我已经成功地在我的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()); } };
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。