【发布时间】:2012-08-30 19:45:24
【问题描述】:
我有一个由三 (3) 个 ArrayList 填充的 ListView:
items、ratings 和 comments
但是,我需要通过忽略前导“the”来对项目进行排序。我已经通过使用Collections.sort 重新排列items ArrayList 来完成此操作(请参见下面的代码),但这是问题所在:cmets 和评级没有重新排列,因此它在ListView 中出现乱序。
例如,如果列表是:
- 汽车 3 4
- 人5 3
- 动物 7 4
items 排序后我得到:
- 动物 3 4
- 汽车 5 3
- 人 7 4
所以items 按我的意愿排列,但关联的comments 和ratings 没有排序。我不确定如何做到这一点以及将其放置在哪里。我认为在 ArrayAdapter 中?
这是我更改items 列表的代码:
Comparator<String> ignoreLeadingThe = new Comparator<String>() {
public int compare(String a, String b) {
a = a.replaceAll("(?i)^the\\s+", "");
b = b.replaceAll("(?i)^the\\s+", "");
return a.compareToIgnoreCase(b);
}
};
Collections.sort(items, ignoreLeadingThe);
这是问题吗?我可以在哪里以及如何根据项目列表的位置对评级和 cmets 列表进行排序?
编辑:
这是我在ArrayAdapter 中的getView 代码:
ItemObject io = getItem(position);
String name = io.name;
String total = io.total;
String rating = io.ratings;
String comment = io.comments;
holder.t1.setText(name);
holder.t2.setText(total);
holder.t3.setText(comment);
holder.t4.setText(rating);
注意:还有一个名为total 的第四个ArrayList 我在上面的例子中没有提到。
【问题讨论】:
标签: android sorting android-listview android-arrayadapter