Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 根据时间列排列cutom Arraylist_Android - Fatal编程技术网

Android 根据时间列排列cutom Arraylist

Android 根据时间列排列cutom Arraylist,android,Android,我有一个自定义arraylist,它包含多个随时间变化的参数 我想根据时间参数对该列表进行排序,格式为“结束”和“结束” 我找了很多 这里有一些链接 还有更多 但都不管用 这是我的密码 单击调用函数 private void callTimeSorting(ArrayList<ObjectClass>solutions){ try{ ArrayList<ObjectClass> tempList = new ArrayList<>

我有一个自定义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中,您正在使用哪个列表?