Java 如何按字母顺序对自定义listview排序?
我有一个带有ImageView和textview的customlist视图。我正在通过以下方法检索该列表视图:Java 如何按字母顺序对自定义listview排序?,java,android,Java,Android,我有一个带有ImageView和textview的customlist视图。我正在通过以下方法检索该列表视图: private List<Currency> getModel() { List<Currency> list = new ArrayList<Currency>(); for (int i = 0; i < countryCode.length; i++) { list.add(get
private List<Currency> getModel() {
List<Currency> list = new ArrayList<Currency>();
for (int i = 0; i < countryCode.length; i++) {
list.add(get(countryCode[i], flag[i]));
}
return list;
}
private List getModel(){
列表=新的ArrayList();
for(int i=0;i
此方法返回特定列表项中的图像和文本视图列表,我正在适配器中设置它以在listview中显示它。但是,如何通过按字母顺序与列表中该文本视图的文本进行比较来对该列表进行排序?我试过这个
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
});
Collections.sort(列表,新比较器(){
@凌驾
公共整数比较(字符串s1、字符串s2){
返回s1.compareToIgnoreCase(s2);
}
});
但是这个方法只适用于字符串类型列表,但是我的列表不是字符串类型?怎么办?试着用这种方式进行比较
Collections.sort(list, new Comparator<Currency>() {
@Override
public int compare(Currency c1, Currency c2) {
return c1.getCurrencyName().compareToIgnoreCase(c2.getCurrencyName());
}
})
Collections.sort(列表,新比较器(){
@凌驾
公共整数比较(货币c1、货币c2){
返回c1.getCurrencyName().compareToIgnoreCase(c2.getCurrencyName());
}
})
集合。排序(列表,新比较器(){
@凌驾
公共整数比较(货币s1、货币s2){
返回s1.compareTo(s2);
}
});
不要忘记实现
Comparable
接口,以便实现compareTo(货币o)代码>您想要的方式。您的列表包含货币
对象,因此您需要创建一个比较器来比较货币
。现在,我不确定使用的是哪种Currency
类,但如果是这样,那么它有一个getCurrencyCode()
方法返回一个字符串(或者可以使用传递到get()
调用的countryCode
)
然后,您只需创建一个比较器实例,如下所示:
Collections.sort(list, new Comparator<Currency>() {
@Override
public int compare(Currency s1, Currency s2) {
return s1.getCurrencyCode()
.compareToIgnoreCase(s2.getCurrencyCode());
}
});
Collections.sort(列表,新比较器(){
@凌驾
公共整数比较(货币s1、货币s2){
返回s1.getCurrencyCode()
.compareToIgnoreCase(s2.getCurrencyCode());
}
});
注意,return
子句不必进行字符串比较。如果您认为s1
比s2
小,则返回一个小于零的值;如果您认为它比s2
大,则返回一个大于零的值(如果它们相等,则返回零)。比较算法由您决定。在此处阅读可比较的界面:是的,这一个有效,非常感谢:)
Collections.sort(list, new Comparator<Currency>() {
@Override
public int compare(Currency s1, Currency s2) {
return s1.getCurrencyCode()
.compareToIgnoreCase(s2.getCurrencyCode());
}
});