【问题标题】:Sort listview by date Android按日期排序列表视图Android
【发布时间】:2011-03-16 09:11:33
【问题描述】:

我有一个自定义列表视图,其中包含有关电视节目的信息,即。节目标题,最后一集,最后一集日期,下一集,下一集日期等等。

现在我想对列表视图进行排序,即。到最后一集日期。节目存储在 Arraylist 中,日期存储为 MMM/dd/yyyy 格式的字符串。

Sort by title works with follow code:

    public void sortByTitle() {
        Comparator<Show> comperator = new Comparator<Show>() {
            @Override
            public int compare(Show object1, Show object2) {
                return object1.getTitle().compareToIgnoreCase(
                        object2.getTitle());
            }
        };
        Collections.sort(dataFromDB, comperator);
        lv1.setAdapter(new CustomListViewAdapter(this, dataFromDB));
    }

谁能帮忙?

【问题讨论】:

  • 您是否从 db 获取数据?什么是 dataFromDB ?

标签: android listview sorting


【解决方案1】:

将您的日期存储为yyyy-MM-dd 格式的字符串。以这种格式比较两个日期字符串将始终保证获得升序/降序排序。

【讨论】:

  • 这称为 ISO 格式。它还用于在 SQLite 中存储日期,这些日期被视为字符串。也可以添加时间信息:“yyyy-MM-dd HH:mm:ss”
  • @Klaus66 : “这被称为 ISO 格式” 技术上不正确。它被称为大端日期格式,但如果您指的是 ISO8601,那么默认情况下使用大端格式是正确的。 SQLite 还有另外两种处理日期/时间字段的方法 - REAL(自公元前 4714 年 11 月 24 日格林威治中午以来的天数)和 INTEGER(自 1970-01-01 00:00:00 UTC 以来的秒数)每个 Unix 时间)。 SQLite 日期/时间函数可以处理(并返回)ISO8601 格式,但可以处理其他数据类型之间的转换。
  • 每天我都会学到一些我以前不知道的东西——谢谢你的澄清!
  • 实际上我使用了 dd-mm-yyy 格式,但它的排序方式错误,在看到您的评论后,我更改为 dd-MM-yyyy(大写字母 MM),然后它工作正常。谢谢!
  • @KarthickPandiyan :是的 - mm(小写)是分钟。如您所见,您需要使用 MM(大写)来表示月份。
【解决方案2】:

与您根据标题排序相同,也可以使用日期来完成。 示例:

 // sort by date
    public int compareTo(NewsDetails another) 
    {
        if (another == null) return 1;
        // sort descending, most recent first
        return another.date.compareTo(date);
    }

【讨论】:

  • 好的,怎么样?因为那时我让它按日期排序,它只按 MMM 字母顺序排序。
  • 在 Show 类中,你有 DateTime 变量吗?如果是这样,那么比较日期。如果您有字符串格式的日期,则将它们转换为日期,然后比较
  • @Sandy 在 compatreTo(date) 代码中,应该通过哪个日期..?
  • @Pranav:您正在比较 2 个日期,date1.comapretTo(date2)。
【解决方案3】:

考虑到您拥有 ArrayList 中的所有数据,并且您有两个 ArrayList,一个包含日期,另一个 ArrayList 中的相应索引包含有关电视节目的其他详细信息,您应该对两个 ArrayList 进行排序根据保存日期的ArrayList中存储的日期,然后提供给ListView适配器。

您可以构造一个带有日期时间的 Date 对象,然后对它们进行排序。

这有帮助吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2012-12-13
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多