我有一个方法应该返回" item"的一个arraylist。 (包含三个字符串,name,imageurl,audiourl)。
在文件系统中,我在同一文件夹中有相应的文件名(扩展名jpg,png,mp3除外)。
我试图搜索该文件夹并收集所有匹配jpg / png到mp3的文件。把它放在arraylist中。
我虽然用这段代码:
public ArrayList<PictureItem> getArrayOfPictureItemFromFolder(String directoryPath) {
ArrayList<PictureItem> arrayOfPictureItems = new ArrayList<PictureItem>();
PictureItem pi;
File directory = new File(directoryPath);
File[] imageListing = directory.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if (name.toLowerCase().endsWith(".png")) {
return name.toLowerCase().endsWith(".png");
}
if (name.toLowerCase().endsWith(".jpg")) {
return name.toLowerCase().endsWith(".jpg");
} else {
return false;
}
}
});
File[] audioListing = directory.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".mp3");
}
});
if (imageListing != null) {
for (int i = 0; i < imageListing.length; i++) {
String imagePath = imageListing[i].toString();
String imagetitle = imageListing[i].getName();
int removeImageExtension = imagetitle.lastIndexOf(".");
if (removeImageExtension > 0) {
imagetitle = imagetitle.substring(0, removeImageExtension);
}
for (int j = 0; j < audioListing.length; i++) {
String audioPath = audioListing[j].toString();
String audioTitle = audioListing[j].getName();
int removeAudioExtension = audioTitle.lastIndexOf(".");
audioTitle = audioTitle.substring(0, removeAudioExtension);
if (imagetitle.equals(audioTitle)) {
pi = new PictureItem(imagePath, imagetitle);
pi.setSoundPath(audioPath);
arrayOfPictureItems.add(pi);
}
}
}
} else {
return null;
}
return arrayOfPictureItems;
}
但由于某些原因,当我启动代码时,它只会进入黑屏,我无法回到&#34;到带有后退按钮的主菜单。
Logcat不断重复这一点(让它运行一段时间)。
11-27 01:59:29.778 7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC
freed 3072K (98250), 43% free 4233K/7424K, paused 22ms, total 22ms
11-27 01:59:29.939 7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC
freed 3072K (98250), 43% free 4233K/7424K, paused 21ms, total 21ms
11-27 01:59:30.108 7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC
freed 3072K (98250), 43% free 4233K/7424K, paused 25ms, total 25ms
11-27 01:59:30.278 7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC
freed 3072K (98250), 43% free 4233K/7424K, paused 21ms, total 21ms
11-27 01:59:30.439 7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC
freed 3072K (98250), 43% free 4233K/7424K, paused 22ms, total 22ms
11-27 01:59:30.611 7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC
freed 3072K (98250), 43% free 4233K/7424K, paused 21ms, total 21ms
11-27 01:59:30.778 7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC
freed 3072K (98250), 43% free 4233K/7424K, paused 22ms, total 22ms
我知道应用程序的其余部分在我刚扫描完目录并将所有内容添加到arraylist而没有排序名称时有效。我试图设置断点并在调试模式下运行,但它拒绝停止该代码中的任何位置,包括预启动代码。 if if //除了返回arrayOfPictureItems之外的所有内容,app返回按钮再次起作用,断点也是如此...
答案 0 :(得分:1)
你的第二个for循环增加i
而不是j
- 所以j
永远不会改变。