在哪里使用比较器对适配器进行排序

Where to use Comparator to Sort Adapter

我有一个在行中有日期的适配器。当用户更新日期时,我希望根据 object 日期 属性 中我的 UNIX 时间对行进行重新排序。我相信我需要在 ArrayList<Object> 上为此使用 Comparator 和/或 Collections 排序。从 this question.

可以看出

我的问题是:当我调用 notifyDataSetChanged() 时, ArrayAdapter 中的 是否需要进行排序?或者当我构建它时它会在适配器之外(这对我来说没有意义)?

在调用 notifyDataSetChanged 之前对适配器的支持数据对象进行排序。

要获得代码答案,请将其放在您的适配器中或您需要进行排序的任何地方:

            adapter.sort(new Comparator<Ledger>() {
                public int compare(MyObject lhs, MyObject rhs) {
                    return  rhs.transaction_date.compareTo(lhs.transaction_date);
                }
            });
            notifyDataSetChanged();

这是我用来实现此功能的代码。注意:我想按降序排序,所以我在 lhs 之前返回了 rhs。此外,这可以保持您的 ListView 位置,这总是好的。