我想按int值对Listview进行排序。我已经查看了类似的问题和解决方案,并做了类似的事情,但它没有排序listView降序(没有任何事情发生顺便说一句)。在arrayList中,该对象具有名为" rating"的字段。这是一个代码:
public class GifModel implements Comparable<GifModel>, Comparator<Integer>{
.......
.......
@Override
public int compare(Integer lhs, Integer rhs) {
// TODO Auto-generated method stub
return lhs.intValue() > rhs.intValue() ? 1:0;
}
}
在主要活动中。 &#34; ratingSort&#34;是一个清单:
ratingSort = new ArrayList<GifModel>(list);
Collections.sort(ratingSort, new Comparator<GifModel>() {
@Override
public int compare(GifModel lhs, GifModel rhs) {
return lhs.compare(lhs.getRating(),rhs.getRating());
}
});
答案 0 :(得分:2)
将您的分类比较器更改为此,您应该好好去:
Collections.sort(ratingSort, new Comparator<GifModel>() {
@Override
public int compare(GifModel lhs, GifModel rhs) {
if (lhs.getRating() < rhs.getRating())
return -1;
else if (lhs.getRating() > rhs.getRating())
return 1;
return 0;
}
});
答案 1 :(得分:1)
您不想对列表视图进行排序,而是要对其进行调整的集合。你可以做一个简单的Comparator()
来完成这个任务。
答案 2 :(得分:1)
根据您的要求,您的GifModel
impl是多余的。 Comparator
,如果已经有了。 Comparable<GifModel>
。
您可以实施compareTo(GifModel o)
方法,然后比较gifModelObj.getRating()
,这样您就可以Collections.sort(ratingSort)
如果您有按any possible field of GifModel
对列表进行排序的要求,则可以让GifModel
同时执行Comparator和Comparable。并为排序创建一些Comparators
。