1

我正在使用android-gpuimage库中的GPUImageView组件在我的.ListView

图像第一次完美地加载了过滤器,ListView但是当我向下滚动时ListView,所有滚动的单元格都显示为空白。

这是getView(...)我的自定义方法的代码BaseAdapter

@Override
public View getView(int position, View convert_view, ViewGroup arg2) {
    // TODO Auto-generated method stub

    if(convert_view == null)
    {
        if(inflater == null)
            inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        convert_view = inflater.inflate( R.layout.filter_item , null);

    }

    TextView thumb_file_name_tv = (TextView) convert_view.findViewById(R.id.filter_item_thumb_tv);

    GPUImageView thumb_giv = (GPUImageView) convert_view.findViewById(R.id.filter_item_thumb_giv);

    Log.d(TAG, "Image Uri = "+imageUri);

    thumb_file_name_tv.setText(""+filterNames.get(position).toString().trim());

    thumb_giv.setFilter(new GPUImageSepiaFilter());

    thumb_giv.setImage(imageUri); // this loads image on the current thread, should be run in a thread

    thumb_giv.requestRender();

    return convert_view;

}

请告诉我我在这里做错了什么?
非常感谢任何帮助。

4

2 回答 2

1

使用新版本的 GPUImage 的 deleteImage () 方法不存在,我做了以下,它工作得很好。

@BindView(R.id.editor)
GPUImageView mEditor;

在更改图像位图的 OnClick 内部,执行以下操作:

mEditor.getGPUImage().deleteImage();
mEditor.setImage(newBitmap);

这样我删除了以前的位图,我可以毫无问题地应用新的位图。

于 2018-11-06T01:10:18.737 回答
0

自从我使用那个库已经有一段时间了,但据我记得,如果您更改视图中的图像,则需要deleteImage()在设置新图像之前调用。
在调用之前尝试调用该方法setImage()您可能需要在调用之前检查视图是否存在图像,deleteImage()否则它可能会引发错误。

编辑:
将以下方法添加到GPUImageView.javaandroid-gpuImage 库的类中:

public void deleteImage() 
{
 mGPUImage.deleteImage(); 
}
于 2014-03-24T16:54:49.727 回答