強制終了。ほっといても良かったんですが。is01は1.6なので。
なんか引っかかって。こちら↓を参考に
Android 1.xと2.2の互換性について
dirListMakerを
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));
try {
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++;
}
} catch (NullPointerException e) {
/*Android2.2ではString[] subFileName = subDir.list();において
* ディレクトリが空の場合nullを返します。
* そのExceptionを回避するためのtry-catchなので
処理をしません。*/
}
m++;
}
return array;
}
try-catchで括っただけ。これで、いけました。エミュレーターでは。
もう一つの方も変更しときました。使ってませんが。
後もう一ヶ所変更。特につながりはありませんが。
javaの道の文字列-6.文字列の分割を参考に。
ActivityのonCreate内でspinnerAdaperにaddしてるとこ↓を
int n = 0;
for(String name : musicDirList) {
++n;
spinnerAdapter.add(n + ":" + name);
}
この様に↓
//ちょっとした準備
ArrayList<String[]> dirNameList = new ArrayList<String[]>();
for (String fileName : musicDirList) {
String[] strArray = fileName.split(File.separator);
dirNameList.add(strArray);
}
//ディレクトリ2階層分だけ表示。SD直下にある時は1階層だけ。
int n = 0;
for(String[] nameList : dirNameList) {
int size = nameList.length;
if (size < 3) {
spinnerAdapter.add((n + 1) + ":" + "/" + nameList[size - 1]);
} else {
spinnerAdapter.add((n + 1) + ":" + "/" + nameList[size - 2] + "/" + nameList[size - 1]);
}
n++;
}
階層が深くなったときに表示しきれなくなってたので。
もっと他にやりようがあるような気もしますが。
layoutを作るとか、adapterを作るとか。
次は、いや次も、なんか適当に。たぶん。
0 件のコメント:
コメントを投稿