removeAllViews不适用于ViewGroup

时间:2016-08-11 06:13:55

标签: android

这个功能是我的功能

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张图片

enter image description here

2)这些图像在滚动视图中完美显示

enter image description here

3)现在我选择了一组不同的图像i.stack.imgur.com/sw5hz.jpg

enter image description here

4)然而,第一个选择仍未从视图中清除i.stack.imgur.com/lKovI.jpg

enter image description here

1 个答案:

答案 0 :(得分:0)

@Shaishav在评论中发布的答案,其中迭代器通过了需要清除的散列集,因此重新初始化变量&#34; mMedia&#34; 完成了这项工作。