0

我正在使用 json 从 url 获取图像并成功存储到 sdcard 中。我想从 sdcard 获取图像并显示到 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 前缀的图像?

4

3 回答 3

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());
        }
    }
}

希望对你有帮助

于 2013-07-30T07:16:03.947 回答
0

您可以使用 FilenameFilter:

f = file.list(new FilenameFilter(){
  @Override
  public boolean accept(File dir, String filename){
    if (filename.startsWith("GR")) return true;
    return false;
  }
});
于 2013-07-30T07:17:08.400 回答
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返回一个介于0和之间的数字f.size() - 1

于 2013-07-30T07:10:01.240 回答