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();}