我正在使用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前缀
的图像答案 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
会返回0
和f.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;
}
});