2013-10-11 2 views
0

Возможно ли создать Drawable[] с петлей для петли?Drawable [] from ArrayList with for loop

ArrayList:

List<String> list = new ArrayList<String>(); 
list.add(Environment.getExternalStorageDirectory() + "/App/posters/80348-16.jpg"); 
list.add(Environment.getExternalStorageDirectory() + "/App/posters/83462-8.jpg"); 

в

private Drawable[] mThumbIds = { 
     Drawable.createFromPath(Environment.getExternalStorageDirectory() + "/Treevo/posters/80348-16.jpg"), Drawable.createFromPath(Environment.getExternalStorageDirectory() + "/Treevo/posters/83462-8.jpg") 
}; 

Моя идея:

for (int i = 0; i < list.size(); i++) 
{ 

     //But what I need to do here? 

} 

Моя цель состоит в том, чтобы генерировать детали для GridView.

ответ

1

Не уверен, какой путь он ожидает, но вы можете попробовать Drawable.createFromPath метод. Предполагая, что вы храните в первом списке правильные пути, вы петля будет выглядеть this.-

Drawable[] drawables = new Drawable[list.size()](); 

for (int i = 0; i < list.size(); i++) { 
    drawables[i] = Drawable.createFromPath(list.get(i)); 
} 
+0

Да, это работает, но я хочу создать его автоматически личное вытяжке [] = {mThumbIds Drawable.createFromPath (Environment.getExternalStorageDirectory() + "/App/posters/80348-16.jpg"), Drawable.createFromPath (Environment.getExternalStorageDirectory() + "/App/posters/83462-8.jpg") }; – ternes3

+0

Mmh не уверен, что вы имеете в виду. Как насчет объявления «Drawable [] drawables = new Drawable [list.size()]();'? – ssantos

+0

вот оно :) спасибо. – ternes3

2

Вы можете сделать это:

File dir = Environment.getExternalStorageDirectory(); 
List<File> list = new ArrayList<File>(); 
list.add(new File(dir, "App/posters/80348-16.jpg")); 
list.add(new File(dir, "App/posters/83462-8.jpg")); 

List<Drawable> mThumbs = new ArrayList<Drawable>(); 
for (File file : list) { 
    mThumbs.add(Drawable.createFromPath(file.getPath()); 
} 

Если вы хотите, чтобы получить список всех. JPG файлы в папке, вы можете построить list так:

File posterDir = new File(Environment.getExternalStorageDirectory(), 
    "App/posters"); 
List<File> list = new ArrayList<File>(); 
for (File file : posterDir.listFiles()) { 
    if (file.isFile() && file.getName().endsWith(".png")) { 
     list.add(file); 
    } 
} 
+0

+1, но я должен порекомендовать зайти в папку плакатов и найти все файлы с суффиксом, который указывает изображение. – Sajmon

+1

@ H.Moody. У меня создалось впечатление, что OP не спрашивал о создании списка загружаемых файлов, но как обрабатывать список после его появления. Нет ничего, чтобы предположить, что OP хочет загрузить все изображения в папке, но если это то, что хочет OP, ваше предложение является хорошим. Я добавил код, чтобы показать, как это можно сделать. –

+0

Нет проблем. Мистер Тед Хопп, это всего лишь записка. – Sajmon

0

Что вам нужно сделать, это для каждого цикла. Это выглядит примерно так.

List<String> list = new ArrayList<String>(); 
String[] imgPathList = ... // Add all of the "/App/poster..." strings here 

for(String x : imgPathList) { 
    list.add(Enviroment.getExternalStorageDirectory() + x); 
} 

Вот пример с разными вещами.

List<String> list = new ArrayList<String>(); 
String[] data = { 
    "123", 
    "456", 
    "789" 
}; 

for(String x : data) { 
    list.add("Number: " + x); 
} 

System.out.println(list.toString()); 

Отпечатки: "[Номер: 123, Количество: 456, Количество: 789]"