Android 陷入圈套?应用程序不会崩溃,但也不会显示或工作

Android 陷入圈套?应用程序不会崩溃,但也不会显示或工作,android,for-loop,arraylist,Android,For Loop,Arraylist,我有一个方法,应该返回“item”的arraylist(包含三个字符串,name、imageurl、audiourl) 在文件系统中,我在同一文件夹中有匹配的文件名(扩展名jpg、png、mp3除外) 我正在尝试搜索该文件夹,并收集所有与jpg/png或mp3匹配的文件。把这个放进arraylist 我认为它有以下代码: public ArrayList<PictureItem> getArrayOfPictureItemFromFolder(String directoryP

我有一个方法,应该返回“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;

}

我知道,当我刚刚扫描了目录并将所有内容添加到arraylist中而没有对名称进行排序时,应用程序的其余部分都可以工作。我试图设置断点并在调试模式下运行,但它拒绝在代码中的任何地方停止,包括启动前代码。如果我//除return arrayOfPictureItems之外的所有内容,应用程序返回按钮将再次工作,断点也将再次工作…

你的第二个for循环增量
i
而不是
j
-因此
j
永远不会更改。

!我只是在查看代码时看到,我有一个i++在第二个for循环中,应该是j。。。这修复了“锁”,我现在用声音显示图片。但它们没有正确匹配。如果我按下猫的图像,它会播放音频=狗…有什么建议我的排序/匹配功能有什么问题吗?我不知所措(自动取款机:)
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