在哪里使用比较器对适配器进行排序
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
位置,这总是好的。
我有一个在行中有日期的适配器。当用户更新日期时,我希望根据 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
位置,这总是好的。