首先按照最近或即将到来的日期的顺序获取排序列表,然后根据今天的日期获取其余的列表

卡兰

列表的排序方式应该是项目的日期应该接近今天的日期,如果它已经过了今天的日期并且仍然最近,那么它应该到最后。例如:

日期 - 3/10/2017 12/9/2017 20/10/2017 21/10/2017

假设这是从数据库中检索到的日期列表,当添加到自定义适配器时,将按相同顺序显示列表视图项。但我希望它们被订购为(考虑到今天的日期 - 18/10/2017)

20/10/2017 21/10/2017(由于即将到来的日期以前两项结束,现在是通过的日期列表)3/10/2017 12/9/2017

这是使用的类,

作业上传.java

public AssignmentUpload(String fileName, String url, String year, String title,
                        String instructions, AttendanceDate attendanceDate, String subjectName, String uploadedBy) {
    this.fileName = fileName;
    this.url = url;
    this.year = year;
    this.title = title;
    this.instructions = instructions;
    this.attendanceDate = attendanceDate;
    this.subjectName = subjectName;
    this.uploadedBy = uploadedBy;
}

public String getFileName() {
    return fileName;
}

public void setFileName(String fileName) {
    this.fileName = fileName;
}

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}

public String getYear() {
    return year;
}

public void setYear(String year) {
    this.year = year;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getInstructions() {
    return instructions;
}

public void setInstructions(String instructions) {
    this.instructions = instructions;
}

public AttendanceDate getAttendanceDate() {
    return attendanceDate;
}

public void setAttendanceDate(AttendanceDate attendanceDate) {
    this.attendanceDate = attendanceDate;
}

public String getSubjectName() {
    return subjectName;
}

public void setSubjectName(String subjectName) {
    this.subjectName = subjectName;
}

public String getUploadedBy() {
    return uploadedBy;
}

public void setUploadedBy(String uploadedBy) {
    this.uploadedBy = uploadedBy;
}}

AttendanceDate.java 用于日期

public class AttendanceDate implements Serializable{

private int day, month, year;

public AttendanceDate() {
}

public AttendanceDate(int day, int month, int year) {
    this.day = day;
    this.month = month;
    this.year = year;
}

public int getDay() {
    return day;
}

public void setDay(int day) {
    this.day = day;
}

public int getMonth() {
    return month;
}

public void setMonth(int month) {
    this.month = month;
}

public int getYear() {
    return year;
}

public void setYear(int year) {
    this.year = year;
}

@Override
public String toString() {
    return "AttendanceDate{" +
            "day=" + day +
            ", month=" + month +
            ", year=" + year +
            '}';
}}

FacultyViewAssignmentActivity.java 有 loadAssignmentList() 函数要编辑

private void loadAssignmentsList() {
    pDialog.setTitle("Searching...");
    pDialog.setMessage("Enjoy Assignments... :)");
    pDialog.show();
    reference.child("assignments")
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    assignmentUploadList.clear();
                    for (DataSnapshot ps : dataSnapshot.getChildren()) {
                        for (DataSnapshot ds : ps.getChildren()) {
                            assignmentYear.setSubjectName(ds.getValue().toString());
                            for (DataSnapshot dss : ds.getChildren()) {
                                AssignmentUpload a = dss.getValue(AssignmentUpload.class);
                                assignmentUploadList.add(a);
                            }
                        }
                    }
                    assAdapter = new FacultyViewAssignmentAdapter(FacultyViewAssignmentActivity.this, assignmentUploadList);
                    recyclerView.setAdapter(assAdapter);
                    pDialog.dismiss();
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    pDialog.dismiss();
                }
            });
}

长期以来一直坚持这一点,任何帮助将不胜感激......谢谢!

最大08

如果您创建两个排序列表,一个是即将到来的日期,另一个是已经过去的日期。然后首先用即将到来的日期和过去的日期填充第三个列表。:-

测试代码

package com.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

public class TestCode {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        Date today = sdf.parse("18/10/2017");

        // assuming Dates - 3/10/2017 12/9/2017 20/10/2017 21/10/2017
        String dts = "3/10/2017,12/9/2017,20/10/2017,21/10/2017";

        List<AssignmentUpload> assignmentUploadList = new ArrayList<AssignmentUpload>();
        List<AssignmentUpload> futureAssg = new ArrayList<AssignmentUpload>();
        List<AssignmentUpload> pastAssg = new ArrayList<AssignmentUpload>();
        List<AssignmentUpload> finalAssg = new ArrayList<AssignmentUpload>();

        for (String dt : dts.split(",")) {

            String[] nos = dt.split("/");
            int day = Integer.parseInt(nos[0]);
            int mon = Integer.parseInt(nos[1]);
            int year = Integer.parseInt(nos[2]);

            AttendanceDate ad = new AttendanceDate(day,mon,year);
            AssignmentUpload au = new AssignmentUpload();
            au.setAttendanceDate(ad);
            au.setSubjectName("assg - " +dt);

            assignmentUploadList.add(au);

        }

        // Now we will start with assignmentUploadList

        for (AssignmentUpload au : assignmentUploadList) {

            int day = au.getAttendanceDate().getDay();
            int mon = au.getAttendanceDate().getMonth();
            int year = au.getAttendanceDate().getYear();

            Date date = sdf.parse(day+"/"+mon +"/"+year); 

            if (date.before(today)) {
                pastAssg.add(au);
            } else {
                futureAssg.add(au);
            }

        }

        // Sort pastand future dates individually
        Collections.sort(futureAssg);
        Collections.sort(pastAssg,Collections.reverseOrder());

        // Add future Dates to final Dates first
        finalAssg.addAll(futureAssg);


        // Then Add past Dates to final Dates
        finalAssg.addAll(pastAssg);

        assignmentUploadList = finalAssg;

        for (AssignmentUpload au : assignmentUploadList) {
            System.out.println(au.getSubjectName());
        }

    }

}

更新了 AssignmentUpload.java(使其具有可比性)

package com.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.test.AttendanceDate;

public class AssignmentUpload implements Comparable{

    private String fileName;
    private String url;
    private String year;
    private String title;

    private String instructions;
    private AttendanceDate attendanceDate;
    private String subjectName;
    private String uploadedBy;
    public String getFileName() {
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getYear() {
        return year;
    }
    public void setYear(String year) {
        this.year = year;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getInstructions() {
        return instructions;
    }
    public void setInstructions(String instructions) {
        this.instructions = instructions;
    }
    public AttendanceDate getAttendanceDate() {
        return attendanceDate;
    }
    public void setAttendanceDate(AttendanceDate attendanceDate) {
        this.attendanceDate = attendanceDate;
    }
    public String getSubjectName() {
        return subjectName;
    }
    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }
    public String getUploadedBy() {
        return uploadedBy;
    }
    public void setUploadedBy(String uploadedBy) {
        this.uploadedBy = uploadedBy;
    }

    public int compareTo(Object o) {

        AssignmentUpload au = (AssignmentUpload)o;

        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");



        int day = attendanceDate.getDay();
        int mon = attendanceDate.getMonth();
        int year = attendanceDate.getYear();

        int oday = au.getAttendanceDate().getDay();
        int omon = au.getAttendanceDate().getMonth();
        int oyear = au.getAttendanceDate().getYear();

        try {
            Date date = sdf.parse(day+"/"+mon +"/"+year);
            Date odate = sdf.parse(oday+"/"+omon +"/"+oyear);

            return date.compareTo(odate);

        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return 0;
    }



}

输出: assg - 20/10/2017 assg - 21/10/2017 assg - 3/10/2017 assg - 12/9/2017

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获取当前日期和即将到来的日期?

我想按日期排序,因为我正在创建即将到来的活动列表

获取即将到来的夏令时日期

T-SQL根据单个即将到来的日期和续订期限生成续订日期列表

Java 排序列表,流首先按长度,然后按字母顺序

如何首先按 id 获取特定行,然后按特定列的字母顺序对其余行进行排序

php从一天中的月份获取即将到来的日期

首先按字母顺序对列表进行排序,然后按数字对列表进行排序?

首先按年份排序列表列表,然后按月份排序

使用DateTime捕获即将到来的日期

用即将到来的日期将日期与字符串排序为数组

根据修改日期获取文件夹的排序列表

按日期排序对象顺序列表

根据从当前日期确定的开始日期和结束日期显示即将到来的到期日期

如何首先按ID然后按发布日期对python列表进行分组

SQLite-按下一个即将到来的日期排序(忽略年份)

是否根据条件使用Google表格中的公式来确定即将到来的日期?

从列表Powershell获取与今天最近的下一个日期的行

使用MySQL从表中获取特定列表,然后再获取其余列表

如何按即将到来的生日顺序获取联系人?

首先按特定值排序,然后按顺序显示所有其余部分

根据日期排序列表,缺少日期插入

Python列表排序列表根据日期部分反转

尝试先按日期然后按最大数对python中的元组列表进行排序

获取即将到期的日期通知并在SQL中获取日期

未获取未定义的 JavaScript 值即将到来

如何获取即将到来的文件大小,以KB为单位

根据日期范围递归获取文件列表

根据条件XSLT 2.0获取日期列表