我有一个名为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());