2010-11-30

mediaplayerを作ってみる(8)-1

今回はspinner。予定どおり。
参考はここここ、そしてここ
何か、嫌がらせの様だ。別にそんな気はないですが。

(8)-1では、3つ目のここを参考にして作ったclass + αを。
まあ、参考というかちょっと変えただけですが。そんなんばっか。
まあ、とりあえず。

SD内の音楽ファイルの入ったディレクトリを、
ArrayListに詰め込みます。音楽ファイル以外にも使えます。たぶん。
いやきっと。参考にしたとこを考えると。載せときます。

 package net.asasvata.listmaker;

import java.io.File;
import java.util.ArrayList;

public class DirListMaker {
    private final String FILE_SEP = File.separator;
  
    //ファイル1種類用
    public ArrayList<String> dirListMaker(ArrayList<String> list, String ext) {
        //ArrayListの生成
        ArrayList<String> array = new ArrayList<String>();
      
        int m = 0; int n = 0;
        while (list.size() > m) {
          
            File subDir = new File(list.get(m));
            String[] subFileName = subDir.list();
          
            n = 0;
            while (subFileName.length > n) {
                File subFile = new File(subDir.getPath() + FILE_SEP + subFileName[n]);
              
                if (subFile.isDirectory()) {
                    list.add(subDir.getPath() + FILE_SEP + subFileName[n]);
                  
                } else if (subFile.isFile() && subFile.getName().endsWith(ext)) {
                  
                    if (!array.contains(list.get(m))) {
                        array.add(list.get(m));
                    }
                }
                n++;
            }
            m++;
        }
        return array;      
    }
  
    //ファイル2種類用
    public ArrayList<String> dirListMaker(ArrayList<String> list, String ext1, String ext2) {
        ArrayList<String> array = new ArrayList<String>();
        int m = 0; int n = 0;
        while (list.size() > m) {
            File subDir = new File(list.get(m));
            String[] subFileName = subDir.list();
            n = 0;
            while (subFileName.length > n) {
                File subFile = new File(subDir.getPath() + FILE_SEP + subFileName[n]);
                if (subFile.isDirectory()) {
                    list.add(subDir.getPath() + FILE_SEP + subFileName[n]);
                } else if (subFile.isFile() &&
                        (subFile.getName().endsWith(ext1) || subFile.getName().endsWith(ext2))) {
                  
                    if (!array.contains(list.get(m))) {
                        array.add(list.get(m));
                    }
                }
                n++;
            }
            m++;
        }
        return array;      
    }
}

パッケージも分けました。なんとなく。javaっぽいかと。
ファイル2種類用も作りました。元ネタと同じ書き方なので。
動くと思います。確認してませんが。

違うのはファイルをリストに詰めるのではなく、ディレクトリを詰めること。
まあ、そんだけしか変えてません。

後、もう一個。ついでに作りました。

package net.asasvata.listmaker;

import java.io.File;
import java.util.ArrayList;

public class FileListMaker {
    private final String FILE_SEP = File.separator;
   
    //ファイル1種類用
    public void fileListMaker(String name, String ext, ArrayList<String> list) {
       
        File musicFile = new File(name);
        String[] musicFileList = musicFile.list();
       
        for (String fileName : musicFileList) {
            File file = new File(name + FILE_SEP + fileName);
           
            if (file.isFile() && fileName.endsWith(ext)) {
                list.add(fileName);
            }
        }
    }
   
    //ファイル2種類用
    public void fileListMaker(String name, String ext1, String ext2, ArrayList<String> list) {
        File musicFile = new File(name);
        String[] musicFileList = musicFile.list();
        for (String fileName : musicFileList) {
            File file = new File(name + FILE_SEP + fileName);
            if (file.isFile() && (fileName.endsWith(ext1) || fileName.endsWith(ext2))) {
                list.add(fileName);
            }
        }
    }
}

まあ、なんですなdirListMakerで作ったディレクトリリストに入ってる
ファイルを別のリストに詰め込む。そんな感じ。spinnerを介して。

で、こいつらを使ったコードを(8)-2に載せときます。

0 件のコメント:

コメントを投稿