OSDN Git Service

15256c7a9a3ff11662b2dbf22cd5d49c9148133f
[gokigen/MeMoMa.git] / app / src / main / java / jp / sourceforge / gokigen / memoma / MeMoMaDataFileHolder.java
1 package jp.sourceforge.gokigen.memoma;
2
3 import java.io.File;
4 import java.io.FilenameFilter;
5
6 import android.content.Context;
7 import android.widget.ArrayAdapter;
8
9 /**
10  *    めもまのデータファイル名を保持するクラス (ArrayAdapterを拡張)
11  * 
12  * @author MRSa
13  *
14  */
15 public class MeMoMaDataFileHolder extends ArrayAdapter<String> implements FilenameFilter
16 {
17         private ExternalStorageFileUtility fileUtility = null;
18         private String fileExtension = "";
19
20         /**
21          *    コンストラクタ
22          * 
23          */
24     public MeMoMaDataFileHolder(Context context, int textViewRscId, ExternalStorageFileUtility utility, String extension)
25     {
26         super(context, textViewRscId);
27         fileUtility = utility;
28         fileExtension = extension;
29     }
30     
31     /**
32      *    ファイル一覧を生成する。
33      * 
34      */
35     public int updateFileList(String currentFileName, String extendDirectory)
36     {
37         int outputIndex = -1;
38         
39         clear();
40         String directory = fileUtility.getGokigenDirectory();
41         if (extendDirectory != null)
42         {
43                 // ディレクトリが指定されていた時には、そのディレクトリを追加する
44                 directory = directory + extendDirectory;
45         }
46         String[] dirFileList = (new File(directory)).list(this);
47         try {
48                         for (int index = 0; index < dirFileList.length; index++) {
49                                 String fileName = dirFileList[index].substring(0, dirFileList[index].indexOf(fileExtension));
50                                 if (fileName.contentEquals(currentFileName) == true)  // ファイル先頭にない場合は追加する。
51                                 {
52                                         // 選択したインデックスを設定する。
53                                         outputIndex = index;
54                                 }
55                                 add(fileName);
56                                 //Log.v(Main.APP_IDENTIFIER, fileName + ", File : " + dirFileList[index]);
57                         }
58                 }
59                 catch (Exception e)
60                 {
61                                 e.printStackTrace();
62                 }
63         System.gc();
64         
65         //Log.v(Main.APP_IDENTIFIER, "::::::: "  + " (" + currentFileName + ") : " + outputIndex);
66         return (outputIndex);
67     }
68
69     /**
70      *    受け付けるファイル名のフィルタを応答する。
71      *    (指定された拡張子を持つなファイルだけ抽出する。)
72      * 
73      */
74     public boolean accept(File dir, String filename)
75     {
76         return (filename.endsWith(fileExtension) ? true : false);
77     }
78 }