2014-02-13 45 views
2

我从来没有使用枚举之前。所以请耐心等待我一点。如何正确使用枚举java/android

应用背景:

我创建在其中用户可以从外部存储USB设备添加三个类型的源,*music**video**pictures*的应用程序。
用户在usd驱动器上选择一个文件夹并将其添加到源中,然后为其添加一个类别。

THIS HAS BEEN DONE

问题是

现在我想读由具有特定扩展名,如按类别定义的文件夹中的所有文件。

以下是将存储在XML文件中

<?xml version="1.0" encoding="UTF-8"?> 

<Picture> 
    <ext>jpg</ext> 
    <ext>png</ext> 
    <ext>gif</ext> 
    <ext>jpeg</ext> 
    <ext>pdf</ext> 
    <ext>pcd</ext> 
    <ext>jpx</ext> 
    <ext>tif</ext> 
</Picture> 

<Videos> 
    <ext>mpeg</ext> 
    <ext>mpg</ext> 
    <ext>mpe</ext> 
    <ext>mpeg-1</ext> 
    <ext>mpeg-2</ext> 
    <ext>mp4</ext> 
    <ext>mpa</ext> 
    <ext>wmv</ext> 
    <ext>wma</ext> 
    <ext>wmx</ext> 
    <ext>rm</ext> 
    <ext>ra</ext> 
    <ext>3gp</ext> 
</Videos> 

<Music> 
    <ext>mp3</ext> 
    <ext>wav</ext> 
    <ext>dct</ext> 
    <ext>gsm</ext> 
    <ext>flac</ext> 
    <ext>au</ext> 
    <ext>ogg</ext> 
    <ext>raw</ext> 
    <ext>wma</ext> 
    <ext>msv</ext> 
</Music> 

因此,例如用于三类扩展,如果用户选择的视频类,我会读它也有类似的扩展名的所有文件视频在我的XML

我Qustion是:

我试图通过使用ENUM做这件事情,我知道我可以用简单的if/else语句做得一样好,但我需要知道ENUM如何工作。

我已经创建了具有定义类别的媒体源枚举。
下面是代码:

public enum Media_source { 

    Pitures("P"), Videos("V"), Music("M"); 

    private String statusCode; 

    private Media_source(String s) { 
     statusCode = s; 
    } 

    public String get_media_source() { 
     return statusCode; 
    } 

} 

然后,我有,检查被选择的类别一个源类。

public class Source { 

     public static String source_path; 
     public static String source_name; 
     Media_source mSource; 

     public static void main(String[] args) { 

      System.out.println(Media_source.Pitures.get_media_source()); 

     } 


     public Source(String name, String path) { 
      Source.source_name = name; 
      Source.source_path = path; 
     } 
     public static String getSource_path() { 
      return source_path; 
     } 
     public static void setSource_path(String source_path) { 
      Source.source_path = source_path; 
     } 
     public static String getSource_name() { 
      return source_name; 
     } 
     public static void setSource_name(String source_name) { 
      Source.source_name = source_name; 
     } 

} 

现在我该如何选择所有具有所选类别扩展名的文件?
我该如何使用枚举?

我不是要求代码,虽然任何帮助材料将不胜感激 - 我只需要明确概念。

谢谢

回答

1

然后我有一个检查类别选择了源类。” - 我看不出有任何的代码检查Enum的类型。

这是我如何使用我的Enums,你可以做类似的事情。

声明你的枚举:

public enum Media { 
    IMAGE, VIDEO, AUDIO; 
} 

创建这需要枚举作为参数的方法:

public selectStuff(Media m) { 

    switch(m) { 

     case IMAGE: 
      //Do image stuff 
      break; 

     case VIDEO: 
      //Do video stuff 
      break; 

     case AUDIO: 
      //Do audio stuff 
      break; 

     default: 
      break; 

    } 
} 

这是你将如何使用它:

selectMedia(Media.IMAGE); 

Oracle Docs中有一个类似的例子。

+0

我在哪里放这个功能?在枚举? –

+0

我已经明白了,非常感谢 –

1

你可能想在你的代码的地方创建一个EnumMap,与Media_source作为重点,并扩展为一个值的Set<String>。然后使用该地图来获取相应的扩展的介质类型