Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GPUImageView在ListView Android中滚动后呈现空白_Android_Android Gpuimageview - Fatal编程技术网

GPUImageView在ListView Android中滚动后呈现空白

GPUImageView在ListView Android中滚动后呈现空白,android,android-gpuimageview,Android,Android Gpuimageview,我正在使用库中的GPUImageView组件在我的ListView中显示图像(对其应用过滤) 在我的ListView中,首次使用过滤器完美加载图像,但当我向下滚动ListView时,所有滚动的单元格都显示为空白 下面是我的自定义BaseAdapter的getView(…)方法的代码: @Override public View getView(int position, View convert_view, ViewGroup arg2) { // TODO Auto-generated

我正在使用库中的
GPUImageView
组件在我的
ListView
中显示图像(对其应用过滤)

在我的
ListView
中,首次使用过滤器完美加载图像,但当我向下滚动
ListView
时,所有滚动的单元格都显示为空白

下面是我的自定义
BaseAdapter的
getView(…)
方法的代码:

@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;

}
请告诉我我做错了什么

非常感谢您的帮助

我已经有一段时间没有使用该库了,但根据我的记忆,如果在视图中更改图像,则需要在设置新图像之前调用
deleteImage()

在调用
setImage()
之前,请尝试调用该方法。在调用
deleteImage()
之前,您可能需要检查视图是否存在图像,否则它可能会引发错误

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

public void deleteImage() 
{
 mGPUImage.deleteImage(); 
}

对于新版本的GPUImage,deleteImage()方法不存在,我执行了以下操作,它工作得非常好

@BindView(R.id.editor)
GPUImageView mEditor;
在更改图像位图的OnClick中,执行以下操作:

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

通过这种方式,我可以删除以前的位图,并且可以毫无问题地应用新位图。

任何线索,我在这里做错了什么?感谢您的回复,我现在正在尝试此解决方案。
GPUImageView
中没有类似于
deleteDrawingCache()的方法,但是有一种类似的方法是
deleteDrawingCache()
使用后,
GPUImageView
总是呈现为空白。很抱歉,我自己添加了这个,但忘了提及。在GPUImageView类中,添加以下方法:public void deleteImage(){mGPUImage.deleteImage();}