Java 仅在可见时加载ListView元素

Java 仅在可见时加载ListView元素,java,android,listview,bitmap,Java,Android,Listview,Bitmap,我目前在Android中使用ListView时遇到了一个问题。问题是我想从SD卡加载高清图像并在ListView中显示,但现在这些图像占用了太多内存,应用程序崩溃了。 在这里您可以看到我的图片ListAdapter: private Activity activity; private File[] objects; public PictureListAdapter(Activity activity, File[] objects) { super(activity, R.layo

我目前在Android中使用ListView时遇到了一个问题。问题是我想从SD卡加载高清图像并在ListView中显示,但现在这些图像占用了太多内存,应用程序崩溃了。 在这里您可以看到我的图片ListAdapter:

private Activity activity;
private File[] objects;

public PictureListAdapter(Activity activity, File[] objects) {
    super(activity, R.layout.list_element, objects);
    this.activity = activity;
    this.objects = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = this.activity.getLayoutInflater();
    View zeile = inflater.inflate(R.layout.list_element, null, true);

    ImageView pictureView = (ImageView) zeile.findViewById(R.id.image_item);
    Bitmap bmp = getBitmap(position);
    if (bmp != null) {
        pictureView.setImageBitmap(bmp);
    }

    return zeile;
}
private Bitmap getBitmap(int position) {
    return BitmapFactory.decodeFile(objects[position].getAbsolutePath());
}
正如你所看到的,图片是在一个文件[]中给出的,我希望保持这种方式


希望您能帮助我

在将位图渲染到列表视图之前,您可以缩小位图的比例,如下所示:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
return BitmapFactory.decodeFile(objects[position].getAbsolutePath(), options);

这将使图像缩小到1/4 is尺寸和1/16像素。在API指南中查找它

为什么不在适配器中使用
convertView
?您需要将
false
作为
充气()的最后一个参数传递。显示堆栈跟踪。我不知道convertView。非常感谢。