这个功能是我的功能
private void previewCapturedImage(){
Log.d("ChildCount", "content child count before:" + mSelectedImagesContainer.getChildCount());
mSelectedImagesContainer.removeAllViews();
Log.d("ChildCount", "content child count after:" + mSelectedImagesContainer.getChildCount());
Iterator<Uri> iterator = mMedia.iterator();
ImageInternalFetcher imageFetcher = new ImageInternalFetcher(this, 500);
while (iterator.hasNext()) {
Uri uri = iterator.next();
// showImage(uri);
Log.i(TAG, " uri: " + uri);
if (mMedia.size() >= 1) {
mSelectedImagesContainer.setVisibility(View.VISIBLE);
}
View imageHolder = LayoutInflater.from(this).inflate(R.layout.media_layout, null);
// View removeBtn = imageHolder.findViewById(R.id.remove_media);
// initRemoveBtn(removeBtn, imageHolder, uri);
ImageView thumbnail = (ImageView) imageHolder.findViewById(R.id.media_image);
if (!uri.toString().contains("content://")) {
// probably a relative uri
uri = Uri.fromFile(new File(uri.toString()));
}
imageFetcher.loadImage(uri, thumbnail);
mSelectedImagesContainer.addView(imageHolder);
// set the dimension to correctly
// show the image thumbnail.
int wdpx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, getResources().getDisplayMetrics());
int htpx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
thumbnail.setLayoutParams(new FrameLayout.LayoutParams(wdpx, htpx));
}
}
在第二行mSelectedImagesContainer.removeAllViews()
中,我试图清除所有现有子视图的视图。但它没有按预期工作。
所以基本上这个父容器mSelectedImagesContainer有一个从另一个活动传递的图像的水平列表。
此外,日志记录的输出也是准确的,它会清除所有子视图,但由于某种原因,主要活动仍会显示先前在视图组中选择的旧图像。
如果还有其他需要,请告诉我。我没有发布完整的代码,因为它非常大。无论如何,如果需要,我可以在这里用XML发布它。
只是一个信息,我正在使用poly-clicker
库,用于图像选择器和图像的自定义滚动视图。
截图
1)这里我选择了2张图片
2)这些图像在滚动视图中完美显示
3)现在我选择了一组不同的图像i.stack.imgur.com/sw5hz.jpg
4)然而,第一个选择仍未从视图中清除i.stack.imgur.com/lKovI.jpg
答案 0 :(得分:0)
@Shaishav在评论中发布的答案,其中迭代器通过了需要清除的散列集,因此重新初始化变量&#34; mMedia&#34; 完成了这项工作。