2013-02-10 3 views
0

J'ai un objet Liste d'un fichier que je veux filtrer selon certaines règles comme la typologie (audio, vidéo, photo) ou capturer la date/heure, ou les informations Exif (en cas de photos). Je peux le faire avec certains pour des cicles par exemple.Android Liste filtre

Il y a une façon intelligente de le faire? J'ai lu quelque part que la solution est probablement d'utiliser Predicates de Google Guava, mais je ne peux pas comprendre comment cela fonctionne. Toute suggestion? Merci

Répondre

3

En utilisant Goyave prédicats vous faire quelque chose le long des lignes de

import java.io.File; 
import java.util.Collection; 
import java.util.List; 

import javax.annotation.Nullable; 

import com.google.common.base.Predicate; 
import com.google.common.collect.Collections2; 
import com.google.common.io.Files; 

public class FileFiltering { 

    public static void main(String[] args) { 
     List<File> files = getFiles(); 
     Collection<File> audioFiles = Collections2.filter(files, 
       new AudioPredicate()); 

     Collection<File> videoFiles = Collections2.filter(files, 
       new VideoPredicate()); 
    } 

    private static List<File> getFiles() { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 

class AudioPredicate implements Predicate<File> { 

    @Override 
    public boolean apply(@Nullable File file) { 
     return Files.getFileExtension(file.getName()).equalsIgnoreCase("mp3"); 
    } 
} 

class VideoPredicate implements Predicate<File> { 

    @Override 
    public boolean apply(@Nullable File file) { 
     return Files.getFileExtension(file.getName()).equalsIgnoreCase("mkv"); 
    } 
} 

En vous aurez besoin d'écrire du code méthode apply (s) qui retourne vrai pour le type de fichier que vous voulez.

+0

Merci pour votre réponse, comment puis-je combiner plusieurs prédicats en même temps? – phcaze

+1

'com.google.common.base.Predicates' permet de combiner plusieurs prédicats avec' or' et 'and'. – Pierre

+0

J'ai eu cette erreur sur les deux prédicats: 'java.lang.NoClassDefFoundError:' – phcaze