排序arraylist。按int值比较

时间:2014-04-12 21:23:07

标签: java android sorting arraylist

我想按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());
        }

        });

3 个答案:

答案 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