我有一个包含国家列表的数组。
我有一个按钮,可以在我单击时按abc对数组进行排序。
我希望当我再次单击同一按钮时,它将按cba对数组进行排序。
升序和降序。

这是对我的数组排序的方法。

public void sortByNativeName() {
        Collections.sort(mCountries, new Comparator<Country>() {
            @Override
            public int compare(Country o1, Country o2) {
                return o1.getNativeName().compareToIgnoreCase(o2.getNativeName());
            }
        });
        updateAdapter(mCountries);
    }

最佳答案

您可以使用Collections.reverse方法:

public void sortByNativeName() {
        Collections.sort(mCountries, new Comparator<Country>() {
            @Override
            public int compare(Country o1, Country o2) {
                return o1.getNativeName().compareToIgnoreCase(o2.getNativeName());
            }
        });
        if(reverseResult){
            Collections.reverse(mCountries);
        }
        updateAdapter(mCountries);
    }


然后在OnClick开关上单击后的布尔值:

@Override
public void onClick(View view) {
      sortByNativeName();
      reverseResult = !reverseResult;
}


不要忘记将reverseResult boolean声明为global

08-05 03:50
查看更多