2012/04/12

[Android]How to sort object list

How to make a file browser with different sort display method. We can get the file structure first and store in a list. Then use Comparator interface to do different sort.

1. Suppose you have a class "MYFile" and need to sort the ArrayList of MyFiles

    private List myFiles=new ArrayList();

2. Create a Class implements Comparator and with the compare method

  class DirFirstComparator implements Comparator {
    public int compare(MYFile emp1, MYFile emp2) {
    MYFile myfile1 = (MYFile)emp1;
    MYFile myfile2 = (MYFile)emp2;
    if( myfile1.bdir){ // myfile1 is a directory
      if( myfile2.bdir)
        return ( myfile1.showname.compareToIgnoreCase(myfile2.showname));
      else
        return -1;
    } else { // myfile1 is a file
      if( myfile2.bdir )
        return 1;
      else
        return ( myfile1.showname.compareToIgnoreCase(myfile2.showname));
    }
  }

3. Construct the Comparator and call Collections.sort( )
  Comparator comparator = new DirFirstComparator( );
  Collections.sort( myFiles, comparator );