Android 只要去目标一次,它应该去4次。毕加索/塔吉特
所以我实现了毕加索,所以我可以下载图像并保存在sd cart上,这样当我需要的时候,我可以在程序中使用它们 我有一个Android 只要去目标一次,它应该去4次。毕加索/塔吉特,android,picasso,Android,Picasso,所以我实现了毕加索,所以我可以下载图像并保存在sd cart上,这样当我需要的时候,我可以在程序中使用它们 我有一个for循环: for (int i = 0; i < listaProdutos.size(); i++) { caminho =listaProdutos.get(i).getImagem(); Picasso.with(getApplicationContext()).load("URL"+listaProd
for
循环:
for (int i = 0; i < listaProdutos.size(); i++) {
caminho =listaProdutos.get(i).getImagem();
Picasso.with(getApplicationContext()).load("URL"+listaProdutos.get(i).getImagem()).into(target);
}
我对该线程进行了注释,因为无论是否添加,它都可以执行相同的操作,如果需要,您不能取消注释
我已经搜索过了,但是我找不到这个问题的任何答案,所有的URL都可以
我已经这样做了三天了,它保持不变
是listaProdutos.size()=4;
所有的网址都是好的强>
如果你不理解这个问题,请说。你可以创建一个实现目标的类:
class MyTarget implements Target {
String name;
public MyTarget(String name) {
this.name = name;
}
@Override
public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
//new Thread(new Runnable() {
//@Override
//public void run() {
/*
File file = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(),caminho);
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 75, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}*/
try {
verifyStoragePermissions(AtividadePrincipal.this);
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/imagensDaApp");
myDir = new File(myDir, name);
if (!myDir.exists()) {
myDir.getParentFile().mkdirs();
//myDir.createNewFile();
}
FileOutputStream out = null;
out = new FileOutputStream(myDir);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//}
//}).start();
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
if (placeHolderDrawable != null) {
}
}
};
并在循环中使用它:
for (int i = 0; i < listaProdutos.size(); i++) {
caminho =listaProdutos.get(i).getImagem();
Picasso.with(getApplicationContext()).load("URL"+listaProdutos.get(i).getImagem()).into(new MyTarget(caminho ));
}
for(int i=0;i
为什么不使用以下代码?这里没有使用目标,因此没有目标被gc'ed
我也自由地优化了你的代码。我在没有测试代码的情况下完成了这项工作,但它应该可以正常工作
new Thread(new Runnable(){
@Override
public void run(){
for (int i = 0; i < listaProdutos.size(); i++) {
caminho =listaProdutos.get(i).getImagem();
try {
verifyStoragePermissions(AtividadePrincipal.this);
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/imagensDaApp");
myDir = new File(myDir, caminho);
if (!myDir.exists()) {
if(myDir.getParentFile().mkdirs()){
//myDir.createNewFile();
FileOutputStream out = null;
out = new FileOutputStream(myDir);
Picasso.with(getApplicationContext()).load("URL"+listaProdutos.get(i).getImagem()).get().compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
}
}
} catch (FileNotFoundException e){
e.printStackTrace();
}catch{IOException e) {
e.printStackTrace();
}
}
}
}).start();
new线程(new Runnable()){
@凌驾
公开募捐{
对于(int i=0;i
我认为毕加索自己会用重复的目标过滤请求。你必须创建4个目标实例才能完成你的任务want@VladMatvienko但在这种情况下是4,但可能用户想要添加5或6,我不知道你需要多少才能在周期内创建新的目标。这样你就可以创建你所需要的。我已经发布了d如果您希望StackOverflow帮助您,回答者也不要在代码中使用非英语名称。我如何向此类发送字符串?@FranciscoMelicias,什么是varivel?@FranciscoMelicias在类中创建一个setter,并将值保存到字段中。something.setString(“此处为您的字符串”)
@FranciscoMelicias,或者你可以把它传递给构造函数。你需要传递你的caminho
吗?是的,我需要它,caminho的意思是路径对不起非英语的人。nx,这对我来说很有效,你只需要修改一些代码,我会接受这个作为答案:)在我的情况下,我不需要那些“如果”,但那就让“捕获”留下吧不是那样工作的,请更改为catch(FileNotFoundException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();}我会接受它们:)@FranciscoMelicias更改了;-)
new Thread(new Runnable(){
@Override
public void run(){
for (int i = 0; i < listaProdutos.size(); i++) {
caminho =listaProdutos.get(i).getImagem();
try {
verifyStoragePermissions(AtividadePrincipal.this);
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/imagensDaApp");
myDir = new File(myDir, caminho);
if (!myDir.exists()) {
if(myDir.getParentFile().mkdirs()){
//myDir.createNewFile();
FileOutputStream out = null;
out = new FileOutputStream(myDir);
Picasso.with(getApplicationContext()).load("URL"+listaProdutos.get(i).getImagem()).get().compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
}
}
} catch (FileNotFoundException e){
e.printStackTrace();
}catch{IOException e) {
e.printStackTrace();
}
}
}
}).start();