在哪里使用Comparator排序适配器

时间:2015-03-08 22:02:59

标签: java android collections adapter comparator

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

这是我用来实现这项工作的代码。注意:我想按降序排序,因此我在rhs之前返回了lhs。此外,这会保持您的ListView位置始终良好。