我是Android开发人员的新手,整天都在研究ListAdapter的问题,但找不到任何帮助我解决问题的答案。
我有一个从URL解析的JSON NewsString,需要将Thumbnail加载到ListView中。 我尝试通过Imageloader加载它(https://github.com/novoda/ImageLoader#directloader-utility),然后将Bitmap转换为Drawable,这样我就可以在ListView中使用它了(之前做过)。
我在Manifest中拥有权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
在AsyncTask中解析JsonObject,我尝试从Url加载图像。
try {
String url = e.getString("imageThumb");
Bitmap bmp = new DirectLoader().download(url);
Drawable d = new BitmapDrawable(null,bmp);
Log.d("getBitmap", d.toString());
row.put("thumb", d);
}catch (Exception e5) {
Log.e("IMG", "Failed to load Thumbnail From URL: "+e5.toString());
Drawable d = MainActivity.hweb_icon;
row.put("thumb", d);
}
但我总是得到相同的错误消息:
我尝试了几个教程和其他东西,但它从来没有为我做过。 网址是正确的,不需要任何编码。
我以前的方法看起来像这样:
try {
String url = e.getString("imageThumb");
InputStream in = new java.net.URL(url).openStream();
Bitmap bmp = BitmapFactory.decodeStream(in);
Drawable d = new BitmapDrawable(null,bmp);
row.put("thumb", d);
}catch (Exception e5) {
// handle it
Log.e("IMG", "Failed to load Thumbnail From URL : "+e5.toString());
}
很抱歉,如果这个问题已经得到解答,但我找到了很多解决方案并尝试过,但没有一个能帮助我。
THX
pwittke
修改 我创建了一个新的Testproject并且下面的代码运行正常,所以我开始停用每个使用drawables的部分并且结果是,SimpleAdapter无法以这种方式加载图像...它只能从resurces加载图像而不是从url ... thx为你的脚本britzl,它工作正常,现在我需要找到一种方法来更改我的适配器的图像......
答案 0 :(得分:0)
有很多方法可以从URL加载位图。如果你想自己动手,你可以试试:
public Bitmap loadImage(String url) {
DefaultHttpClient client = new DefaultHttpClient();
Bitmap bitmap = null;
try {
HttpResponse response = client.execute(new HttpGet(url));
HttpEntity entity = response.getEntity();
if(entity != null) {
InputStream in = entity.getContent();
bitmap = BitmapFactory.decodeStream(in);
}
}
catch (Exception e) {
}
return bitmap;
}
有一些事情需要考虑,例如,如果您遇到Skia解码器错误,您可能需要包装流。 Read more here.
但我建议您查看现有的库。来自Square的即将到来的Picasso库可能是您最好的选择。例如:
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);