使用前缀从SD卡获取图像?

时间:2013-07-30 07:07:31

标签: android

我正在使用json从url获取图像并成功存储到sdcard中。 我想从SD卡获取图像并显示到gridview中。当我使用下面的代码时,我可以轻松获取所有图像并轻松显示到网格视图中。

public void getFromSdcard() {
   ArrayList<String> f = new ArrayList<String>();
   File file = new File("/mnt/sdcard/IMG");
   if (file.isDirectory()) {
      listFile = file.listFiles();
      Log.v("Length", "IMG ::" + listFile.length);
      for (int i = 0; i < listFile.length; i++) {
         f.add(listFile[i].getAbsolutePath());
      }
   }
}

问题是我不想将所有图像显示到网格视图中,我想显示特定图像(使用图像前缀)。

例如我有下面的jpg列表

LR-001.jpg
LR-002.jpg
GR-001.jpg
GR-002.jpg
CF-001.jpg
CF-002.jpg
ER-001.jpg
ER-002.jpg
GBR-001.jpg
GBR-002.jpg
GPT-001.jpg
GPT-002.jpg
NCK-001.jpg
NCK-002.jpg

如何获取 GR前缀

的图像

3 个答案:

答案 0 :(得分:0)

您可以检查文件名是否以“GR”开头,例如:

   for (int i = 0; i < listFile.length; i++) {
        String fileName = listFile[i].getName();
        if (fileName.startsWith("GR"))
              f.add(listFile[i].getAbsolutePath());
    }

与for-each相同

   for (File file : listFile) {
        String fileName = file.getName();
        if (fileName.startsWith("GR"))
              f.add(file);
   }

从ArrayList中获取随机条目,您可以使用Random

private Random randomGenerator; 

randomGenerator = new Random();
int index = randomGenerator.nextInt(f.size());
File file = f.get(index);

nexInt会返回0f.size() - 1

之间的数字

答案 1 :(得分:0)

您可以检查文件名中的起始字母“GR”

以下代码应该正常工作

List<File> f = new ArrayList<File>();
File file = new File("/mnt/sdcard/IMG");
if (file.isDirectory()) {
    listFile = file.listFiles();
    Log.v("Length", "IMG ::" + listFile.length);
    for (File file : listFile) {
        if(file.getName().startsWith("GR"){
           f.add(file.getAbsolutePath());
        }
    }
}

希望它能帮到你

答案 2 :(得分:0)

您可以使用FilenameFilter:

f = file.list(new FilenameFilter(){
  @Override
  public boolean accept(File dir, String filename){
    if (filename.startsWith("GR")) return true;
    return false;
  }
});