Android 根据时间列排列cutom Arraylist
我有一个自定义arraylist,它包含多个随时间变化的参数 我想根据时间参数对该列表进行排序,格式为“结束”和“结束” 我找了很多 这里有一些链接 还有更多 但都不管用 这是我的密码 单击调用函数Android 根据时间列排列cutom Arraylist,android,Android,我有一个自定义arraylist,它包含多个随时间变化的参数 我想根据时间参数对该列表进行排序,格式为“结束”和“结束” 我找了很多 这里有一些链接 还有更多 但都不管用 这是我的密码 单击调用函数 private void callTimeSorting(ArrayList<ObjectClass>solutions){ try{ ArrayList<ObjectClass> tempList = new ArrayList<>
private void callTimeSorting(ArrayList<ObjectClass>solutions){
try{
ArrayList<ObjectClass> tempList = new ArrayList<>();
if (tempList.size() > 0){tempList.clear();}
tempList.addAll(solutions);
if (mTimeTag == 1) {
if (!mAsendingTime) {
Collections.sort(tempList, AsendingTimeComparator);
mAsendingTime = true;
mAdapter.notify();
} else {
Collections.sort(tempList, DesendingTimeComparator);
mAsendingTime = false;
}
}
}
AsendingComparator
private static Comparator<ObjectClass> AsendingTimeComparator = new Comparator<ObjectClass>() {
@Override
public int compare(ObjectClass solution1, ObjectClass solution2) {
String time1 = solution1.getDepartureDateTime();
String time2 = solution2.getDepartureDateTime();
return time1.compareTo(time2);//asending
}
};
private static Comparator<ObjectClass> DesendingTimeComparator = new Comparator<ObjectClass>() {
@Override
public int compare(ObjectClass solution1, ObjectClass solution2) {
String time1 = solution1.getDepartureDateTime();
String time2 = solution2.getDepartureDateTime();
return time2.compareTo(time1);//descending
}
};
private static Comparator AsendingTimeComparator=new Comparator(){
@凌驾
公共整数比较(对象类解决方案1、对象类解决方案2){
字符串time1=solution1.getDepartureDateTime();
字符串time2=solution2.getDepartureDateTime();
返回time1.compareTo(time2);//结束
}
};
专用静态比较器DesendingTimeComparator=新比较器(){
@凌驾
公共整数比较(对象类解决方案1、对象类解决方案2){
字符串time1=solution1.getDepartureDateTime();
字符串time2=solution2.getDepartureDateTime();
返回time2.compareTo(time1);//递减
}
};
我不知道为什么我的排序列表没有附加到recyclerView???使用适配器中使用的原始列表,而不是临时列表
private void callTimeSorting(ArrayList<ObjectClass>solutions){
try{
ArrayList<ObjectClass> tempList = new ArrayList<>();
tempList.addAll(solutions);
solutions.clear();
if (mTimeTag == 1) {
if (!mAsendingTime) {
Collections.sort(tempList, AsendingTimeComparator);
mAsendingTime = true;
} else {
Collections.sort(tempList, DesendingTimeComparator);
mAsendingTime = false;
}
solutions.addAll(tempList);
mAdapter.notifyDataSetChanged();
}
}
private void callTimeSorting(ArrayListsolutions){
试一试{
ArrayList tempList=新的ArrayList();
addAll(解决方案);
解决方案;
如果(mTimeTag==1){
如果(!mAsendingTime){
Collections.sort(templast、AsendingTimeComparator);
mAsendingTime=true;
}否则{
Collections.sort(templast、DesendingTimeComparator);
mAsendingTime=false;
}
addAll(圣堂武士);
mAdapter.notifyDataSetChanged();
}
}
您的列表没有得到排序,因为您正在对圣殿骑士进行排序:
Collections.sort(tempList, AsendingTimeComparator);
而不是适配器使用的实际列表,即解决方案
private void callTimeSorting(ArrayList<ObjectClass>solutions){
try{
if (mTimeTag == 1) {
if (!mAsendingTime) {
Collections.sort(solutions, AsendingTimeComparator);
mAsendingTime = true;
mAdapter.notify();
} else {
Collections.sort(solutions, DesendingTimeComparator);
mAsendingTime = false;
}
}
}
您不应该使用templist和直接排序解决方案
private void callTimeSorting(ArrayList<ObjectClass>solutions){
try{
if (mTimeTag == 1) {
if (!mAsendingTime) {
Collections.sort(solutions, AsendingTimeComparator);
mAsendingTime = true;
mAdapter.notify();
} else {
Collections.sort(solutions, DesendingTimeComparator);
mAsendingTime = false;
}
}
}
private void callTimeSorting(ArrayListsolutions){
试一试{
如果(mTimeTag==1){
如果(!mAsendingTime){
集合。排序(解决方案、AsendingTimeComparator);
mAsendingTime=true;
mAdapter.notify();
}否则{
集合。排序(解决方案、DesendingTimeComparator);
mAsendingTime=false;
}
}
}
使用mList的引用…在整个代码中不要再次初始化..使用clear()
而不是new Arraylist
,并且不要将任何其他引用分配给列表,如list=new\u list;
mAdapter将丢失列表的引用…并相应地不起作用…(notifyDataSetChanged()不起作用。在set adapter中,您正在使用哪个列表?