我正在制作图库应用程序,我想为其添加排序功能,我可以使用以下命令在运行时对项目进行排序Comparator
但问题是,每当我退出应用程序时,列表都会再次从数据库中出来,并且所有列表都未排序,我想在我的应用程序中提供按日期、大小、名称等排序的选项,你们能帮助我如何查看这个并记住用户的选择吗?他下次运行该应用程序时,我还阅读了有关排序列表的内容,请告诉我我的问题的解决方案或当前的任何示例代码,我正在这样做以对项目进行排序
public static final Comparator<MediaFileObject> byName=new Comparator<MediaFileObject>() {
@Override
public int compare(MediaFileObject o1, MediaFileObject o2) {
return o1.getAddedDate().compareTo(o2.getAddedDate());
}
};
我在我的片段中称之为
Collections.sort(list,MediaFileObject.byName);
galleryAdapter.notifyDataSetChanged()
这工作正常,但我想记住用户排序选择请有人帮助我该怎么办?
我可以通过使用来实现这一点吗SortedList
?或任何示例代码请
这可以帮助您根据名称和日期对列表进行排序。
if (theArrayList.size() > 0) {
if (myUserSelectedSortedType == SORT_BY_NAME) {
sortListByName(theArrayList);
} else if (myUserSelectedSortedType == SORT_BY__DATE) {
sortListByDate(theArrayList);
}
myAdapter = new Adapter(MainActivity.this, theArrayList);
myListView.setAdapter(myAdapter);
}
private void sortListByName(ArrayList<CustomerEvents> theArrayListEvents) {
Collections.sort(theArrayListEvents, new EventDetailSortByName());
}
private class EventDetailSortByName implements java.util.Comparator<CustomerEvents> {
@Override
public int compare(CustomerEvents customerEvents1, CustomerEvents customerEvents2) {
String name1, name2;
name1 = customerEvents1.getMyCustomerName().toLowerCase().trim();
name2 = customerEvents2.getMyCustomerName().toLowerCase().trim();
return name1.compareTo(name2);
}
}
private void sortListByDate(ArrayList<CustomerEvents> theArrayListEvents) {
Collections.sort(theArrayListEvents, new EventDetailSortByDate());
}
private class EventDetailSortByDate implements java.util.Comparator<CustomerEvents> {
@Override
public int compare(CustomerEvents customerEvents1, CustomerEvents customerEvents2) {
Date DateObject1 = StringToDate(customerEvents1.getMyDOB());
Date DateObject2 = StringToDate(customerEvents2.getMyDOB());
Calendar cal1 = Calendar.getInstance();
cal1.setTime(DateObject1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(DateObject2);
int month1 = cal1.get(Calendar.MONTH);
int month2 = cal2.get(Calendar.MONTH);
if (month1 < month2)
return -1;
else if (month1 == month2)
return cal1.get(Calendar.DAY_OF_MONTH) - cal2.get(Calendar.DAY_OF_MONTH);
else return 1;
}
}
public static Date StringToDate(String theDateString) {
Date returnDate = new Date();
if (theDateString.contains("-")) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm");
try {
returnDate = dateFormat.parse(theDateString);
} catch (ParseException e) {
SimpleDateFormat altdateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
returnDate = altdateFormat.parse(theDateString);
} catch (ParseException ex) {
ex.printStackTrace();
}
}
} else {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
try {
returnDate = dateFormat.parse(theDateString);
} catch (ParseException e) {
SimpleDateFormat altdateFormat = new SimpleDateFormat("dd/MM/yyyy");
try {
returnDate = altdateFormat.parse(theDateString);
} catch (ParseException ex) {
ex.printStackTrace();
}
}
}
return returnDate;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)