我有一个名为ItemsAdapter的类,其中有三个参数,并在另一个名为ItemsActivity的类中实例化该类,同时需要放置所有三个参数,最后一个参数是我要传递一个称为getImages()在同一类ItemsAdapter中。我只能使用ItemsAdapter对象来访问它,但这是不可行的。这是我尝试过的:

代码:

ItemsAdapter mAdapter = null;
ArrayList<String> image_items = mAdapter.getImages();
mAdapter = new ItemsAdapter(this,R.layout.item,image_items);


更新:

public ArrayList<String> getImages()
    {
        String path = android.os.Environment.getExternalStorageDirectory() + "/Pictures/SanPics2/";
        File mainfolder = new File(path);
        ArrayList<String> files = new ArrayList<String>();
        if(mainfolder.listFiles() == null)
        return null;
        for(File f : mainfolder.listFiles())
        {
            if(f.getName().contains(".jpg"))
            {
                files.add(f.getAbsolutePath());
            }
        }
        return files;
    }


这是我尝试访问的方法。
如预期的那样,它将引发NullPointerException。还有另一种方法可以访问ItemsAdapter类中的getImages()方法。道歉,如果这个问题很愚蠢(我知道是),但是我只是编程和入门的初学者。任何有关如何实现这一目标的想法将不胜感激。提前致谢。

最佳答案

将方法设为静态并使用类名进行调用

public static ArrayList<String> getImages()
    {
        String path = android.os.Environment.getExternalStorageDirectory() + "/Pictures/SanPics2/";
        File mainfolder = new File(path);
        ArrayList<String> files = new ArrayList<String>();
        if(mainfolder.listFiles() == null)
        return null;
        for(File f : mainfolder.listFiles())
        {
            if(f.getName().contains(".jpg"))
            {
                files.add(f.getAbsolutePath());
            }
        }
        return files;
    }


现在称为

ArrayList<String> image_items = ItemsAdapter.getImages();




更好的用法是将该方法移到相同的Activity类ItemsActivity中(如果没有其他类,请调用此方法)。因此,请将此代码放入ItemsActivity而不使其变为静态,例如

private ArrayList<String> getImages() {....} // Same as you posted into question, but public changed to private.


并将此方法调用为与

mAdapter = new ItemsAdapter(this,R.layout.item, getImages());

10-05 21:39