2014-02-13 67 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>。然後使用該地圖來獲取相應的擴展的介質類型