欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现列表数据按名称排序、中英文混合排序

程序员文章站 2023-12-04 20:23:40
有时候我们需要多列表中的数据进行特定的排序,最近项目中用到的是按名称排序,所以简单来说一下: 效果图: 排序方法: collections.sort(st...

有时候我们需要多列表中的数据进行特定的排序,最近项目中用到的是按名称排序,所以简单来说一下:

效果图:

Android实现列表数据按名称排序、中英文混合排序

排序方法:

collections.sort(students, new sortchinesename());
  for (student s : students) {
      log.e("david", "名称正序排列:" + s.getname());
    }
    log.d("david", "---------------------------------------");
    collections.reverse(students);
    for (student s : students) {
      log.e("david", "名称倒序排列(一):" + s.getname());
    }
    log.d("david", "---------------------------------------");
    collections.sort(students, collections.reverseorder(new sortchinesename()));
    for (student s : students) {
      log.e("david", "名称倒序排列(二):" + s.getname());
}

sort方法

class sortchinesename implements comparator<resolveinfo> {
    /**
     * create by davide
     * 参数说明:
     * resolveinfo 为你的list集合中的类-我这里为 android系统中apk信息类
     */

    private context mcontext;

    //构造-传进来context对象
    public sortchinesename(context mcontext) {
      this.mcontext = mcontext;
    }

    collator cmp = collator.getinstance(java.util.locale.china);

    @override
    public int compare(resolveinfo info1, resolveinfo info2) {

      string apkname1 = info1.loadlabel(mcontext.getpackagemanager()).tostring();
      string apkname2 = info2.loadlabel(mcontext.getpackagemanager()).tostring();
      /**
       *create by davide
       *开始比较-我这儿按照apk的名称排序,便获取apkname
       */
      if (cmp.compare(apkname1, apkname2) > 0) {
        return 1;
      } else if (cmp.compare(apkname1, apkname2) < 0) {
        return -1;
      }
      return 0;
    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。