German Alphabetische Sortierung meiner Apps in Liste

Discussion in 'German Forum' started by so27, Aug 28, 2015.

  1. so27

    so27 Active Member Licensed User

    Hallo zusammen,

    über den nachfolgenden Code lese ich die Apps ein, welche auf meinem Gerät installiert sind.
    Code:
    Sub Einlesen

    ListView1.clear
    Dim pl As List
    Dim  pm As PackageManager

        
    Dim bdw As BitmapDrawable

        pl = pm.GetInstalledPackages

        
    For a=0 To pl.Size-1

         
    If pl.Get(a)="com.android.systemui" Then Continue   ' Überspringen, da unter Android >5 kein Icon

        
    Log(pl.Get(a))
            bdw = pm.GetApplicationIcon(pl.Get(a))   
            ListView1.AddTwoLinesAndBitmap2(pm.GetApplicationLabel(pl.Get(a)),pl.Get(a), bdw.Bitmap, pl.Get(a))

        
    Next

    End Sub
    Die Packages (also com.name.name) stecken in der pl List. Diese zu sortieren, ist nicht das Problem.
    Wie kann ich es denn anstellen, dass mein Listview über die erste Zeile pm.GetApplicationLabel (also der wirkliche Name der App)(in der zweiten Zeite steckt das Packages) sortiert wird?
     
  2. specci48

    specci48 Well-Known Member Licensed User

    Hi,

    Listen mit eigenen Typen kann man nach einem beliebigen Typ-Wert sortieren.
    Hier die Dokumentation zu List.SortType und anbei konkret für dein Problem:

    Code:
    Sub Globals
        ...
        
    Type InstalledProgram(AppLabel As String, PackageName As String)
        ...  
    End Sub

    Sub Einlesen
        ListView1.clear
        
    Dim pl As List
        
    Dim pm As PackageManager
        
    Dim bdw As BitmapDrawable
      
        pl = pm.GetInstalledPackages
      
        
    Dim programList As List
        programList.Initialize
      
        
    For a = 0 To pl.Size - 1
            
    If pl.Get(a)="com.android.systemui" Then Continue   ' Überspringen, da unter Android >5 kein Icon
            Dim program As InstalledProgram
            program.AppLabel = pm.GetApplicationLabel(pl.Get(a))
            program.PackageName = pl.Get(a)
            programList.Add(program)
        
    Next
       
        programList.SortType(
    "AppLabel"True)
      
        
    For a = 0 To programList.Size - 1
            
    Dim program As InstalledProgram
            program = programList.Get(a)
            
    Log(program.PackageName)
            bdw = pm.GetApplicationIcon(program.PackageName) 
            ListView1.AddTwoLinesAndBitmap2(program.AppLabel, program.PackageName, bdw.Bitmap, program.PackageName)
        
    Next
    End Sub

    Gruß
    specci48
     
    so27 likes this.
  3. so27

    so27 Active Member Licensed User

    Alles klar, herzlichen Dank für das Beispiel. Klappt (juhu ;))
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice