4.使用自定义适配器在ListView中显示图像。
我只是对步骤1和2有问题。我可以从服务器获取新闻,并在我的ListView中显示它们
并通过在我的适配器中添加以下代码显示缓存中的图像:
Picasso.with(context).load(image[position]).into(iv);
@Override
protected void onPostExecute(Void result) {
SaveImages();
pDialog.dismiss();
super.onPostExecute(result);
}
String fileName = null;
public void SaveImages() {
for(int i = 0; i < image.length; i++) {
Picasso.with(this).load(image[i]).into(target);
fileName = "image-" + i + ".jpg";
}
}
Target target = new Target() {
@Override
public void onPrepareLoad(Drawable arg0) {
}
@Override
public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) {
File file = new File(Environment.getExternalStorageDirectory().getPath() +"/" + fileName);
try {
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 75, ostream);
ostream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onBitmapFailed(Drawable arg0) {
}
};
尝试将target target
定义放在调用picasso.with(this).load(image[i]).into(target);
之前
附言。使用下面的代码和我保存图像非常好。不管怎样,谢谢。
我的代码:
final String fileName = mDataset.get(i).getAid() + ".jpg";
Target target = new Target() {
@Override
public void onPrepareLoad(Drawable arg0) {
return;
}
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom arg1) {
try {
File file = null;
// judge "imgs/.nomedia"'s existance to judge whether path available
if(LightCache.testFileExist(GlobalConfig.getFirstStoragePath()
+ "imgs" + File.separator +".nomedia") == true)
file = new File(GlobalConfig.getFirstStoragePath()
+ "imgs" + File.separator + fileName);
else file = new File(GlobalConfig.getSecondStoragePath()
+ "imgs" + File.separator + fileName);
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, ostream);
ostream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onBitmapFailed(Drawable arg0) {
return;
}
};
Picasso.with(GlobalConfig.getContext())
.load(Wenku8API.getCoverURL(mDataset.get(i).getAid()))
.into(target);
正如你可以看到的使用链接,毕加索只有3个选项加载一个图像。我的问题是,如果您有一个从API的JSON响应解析的base64字符串,那么如何加载图像?
问题内容: 我的API具有针对每个HTTP请求的某种验证机制。端点之一具有使用HTTP post方法加载图像的功能。发布请求主体将包含一个从服务器端验证的JSON对象。 为此,我需要在http post请求正文中包含这样的JSON。 我该如何用毕加索做到这一点? 问题答案: 我从杰克逊·成加莱先生的暗示中得到了解决方案。 创建一个Okhttp请求拦截器 创建一个Okhttp客户端,添加此拦截器 使
从internet加载文本数据并链接到图像。我无法理解如何在listview中加载图像。阅读后,它需要使用毕加索或通用图像加载器,但不明白如何使用。请更正我的代码 }
我在应用程序中使用了毕加索,但我面临一个问题。我在Listview中显示用户配置文件图像,如果图像不存在,我想在ImageView中显示用户名的首字母缩写。我可以显示个人资料图像,如果存在,但为了显示首字母,我如何知道用户没有图像。?
问题内容: 我想使用Picasso在列表视图中一个接一个地加载三个连续的图像。使用毕加索提供的方法可以轻松做到这一点。但是,由于这些图像在不同的时间加载,因此在图像进入时会产生闪烁效果。例如,有时图像2出现在图像1之前,而当图像1加载时会导致不自然的结结。如果可以将listview的可见性设置为不可见,直到可以显示所有图像,那将更好。但是,我找不到用于毕加索的回调方法,该方法会在加载图像时发出信号
我正在使用毕加索图书馆。我知道,如果我将图片从URL加载到图像视图中,有一种回调方法。但我不想加载到imageview中。相反,我想将其另存为位图。所以我用了下面的代码 我怎样才能得到一个回调方法,知道我的图像是成功下载使用毕加索? 不要说位图对象的空检查。这会导致错误。