2012-10-03 4 views
2

설치 한 앱으로 목록을 만들고 사용자가 선택할 수 있도록하는 응용 프로그램에서 작업하고 있습니다. 한 가지를 제외하고는 모든 것이 작동합니다. 그들을 알파벳순으로 주문하십시오. 사용중인 코드는 다음과 같습니다.알파벳순으로 목록 정렬

private List<App> loadInstalledApps(boolean includeSysApps) { 
    List<App> apps = new ArrayList<App>(); 

    PackageManager packageManager = getPackageManager(); 

    List<PackageInfo> packs = packageManager.getInstalledPackages(0); 

    for(int i=0; i < packs.size(); i++) { 
    PackageInfo p = packs.get(i); 

    App app = new App(); 
    app.setTitle(p.applicationInfo.loadLabel(packageManager).toString()); 
    app.setPackageName(p.packageName); 
    app.setVersionName(p.versionName); 
    app.setVersionCode(p.versionCode); 
    CharSequence description = p.applicationInfo.loadDescription(packageManager); 
    app.setDescription(description != null ? description.toString() : ""); 
    apps.add(app); 
    } 

    return apps; 

} 

도움이 되었습니까?

답변

10

사용 Comparator 데이터를 정렬하는 ...

Collections.sort(apps, new Comparator<App>() { 

       @Override 
       public int compare(App lhs, App rhs) { 
         //here getTitle() method return app name... 
        return lhs.getTitle().compareTo(rhs.getTitle()); 

       } 
      }); 
+0

나는 직전에이 코드를 붙여 복사 단지 시도 "애플 리케이션을 반환;" 그 부분은 작동하지 않았다. Eclipse는 @Override 태그를 제거해야한다고 제안했다. 어떻게이 방법을 lhs와 rhs로 "먹이"합니까? 아니면 이것이 작동하지 않는 원인이 있습니까? – SweSnow

+0

Java 컴파일러 1.6을 설정했습니다. –

+0

감사합니다. 이전에 시도했지만 컴파일러 문제로 인해 작동하지 않았습니다. 도와 주셔서 다시 한 번 감사드립니다! – SweSnow

2

첫째 :

:

공공 클래스 앱이 필적을 {

// Lista de atributos y métodos 

public int compareTo(Object o) { 
    // logic of comparation 
    return result; //must be integer 
} 

} 예를 들어

구현하는 비교기를 만들

public int compareTo(Object o) { 
     Direccion dir = (Direccion)o; 
     if(this.name < app.getName()) 
      return -1; 
     else if(this.name == app.getName()) 
      return 0; 
     else 
      return 1; 
} 

그리고 당신은 단기로 할 때, 사용 Collections.short(list)

관련 문제