我对 android 开发比较陌生,我正在尝试使用 ImageView 和 TextView 创建自定义 ListView。我正在将 URL 转换为位图图像,然后尝试在 imageView 中显示图像。但是我收到一个错误,我的应用程序立即崩溃。能够在我的 imageView 中显示可绘制对象,我进行了一些修改并尝试显示位图,然后我的应用程序崩溃了。任何帮助将不胜感激。这是我的 3 节课:
编辑我使用 asynctask 在单独的线程上获取位图图像,现在我的应用程序不再崩溃。但是当我开始活动时它不显示列表视图。这是我更新的代码。
编辑我再次更改了我的代码,我只在我的异步任务的执行方法中传递了一个 imageView。我现在可以在列表视图中看到文本,但看不到图像。这是我编辑的代码。
编辑我使用调试器找出位图没有显示的原因,我发现我的位图变量为空。这是因为我没有添加互联网权限。添加权限后,我的应用程序开始在给定行崩溃:
b = BitmapFactory.decodeStream(image_url.openConnection() .getInputStream());
由于 OutofMemory 错误,我得到了 RuntimeException。我不知道如何解决这个问题。我将不胜感激任何帮助。谢谢 !
这是我的 Loadimage AsyncTask 类:
public class LoadImage extends AsyncTask<String, Integer, Bitmap>{
Context callingContext = null;
Bitmap b = null;
ImageView view;
public LoadImage(ImageView view){
this.view = view;
}
@Override
protected Bitmap doInBackground(String... arg0) {
// TODO Auto-generated method stub
String p_url = "http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png";
Bitmap b = null;
try {
URL image_url = new URL(p_url);
b = BitmapFactory.decodeStream(image_url.openConnection() .getInputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
view.setImageBitmap(result);
}
}