如何动态地将Image添加到ImageView?

凤凰

我正在做一个项目,用户最多可以添加10张图像。当用户单击“添加新图像”按钮时,将创建一个图像视图。我已经在水平滚动的imageview中实现了此功能,以便用户可以水平滚动以查看图像。单击图像后,用户将能够从相机或图库中添加图像。现在的问题是,即使我单击了其他图像视图,图像也总是在最后一个图像视图上设置。我不知道如何在选定的imageview中设置图像。

我已引用此(http://sunil-android.blogspot.in/2013/03/insert-imageview-dynamically-using-java.html)链接来在水平滚动视图中动态创建imageview。

以下是我的代码:

在单击按钮时,将动态添加图像视图:

btn_upload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

                addImageView(image_layout);
        }

});

这是addImageView函数:

  private void addImageView(LinearLayout layout) {

    imageView = new ImageView(this);
    imageView.setImageResource(R.drawable.gallery);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(220, 220);
    imageView.setLayoutParams(layoutParams);
    imageView.setPadding(0, 0, 10, 0);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    imageView.setId(temp);
    layout.addView(imageView);

    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            iv_id = v.getId();

            showDialog(CONTEXT_MENU_ID);  
        }
    });
}

这是用于从相机或图库中选择图像的代码:

 protected Dialog onCreateDialog(int id) {

    if (id == CONTEXT_MENU_ID) {
        return iconContextMenu.createMenu();
    }
    return super.onCreateDialog(id);
}

@SuppressWarnings("deprecation")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode != RESULT_OK)
        return;

    switch (requestCode) {
        case PICK_FROM_CAMERA:
            doCrop();

            break;

        case PICK_FROM_FILE:
            mImageCaptureUri = data.getData();
            doCrop();

            break;

        case CROP_FROM_CAMERA:
            Bundle extras = data.getExtras();

            if (extras != null) {
                SelectedImage = extras.getParcelable("data");

                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                SelectedImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                imageData = baos.toByteArray();
                image = Base64.encodeBytes(imageData);
                filename = "img_" + System.currentTimeMillis();

                imageView.setImageBitmap(SelectedImage); //setting the image

            } else {
                image = "";
            }

            File f = new File(mImageCaptureUri.getPath());

            if (f.exists())
                f.delete();

            break;
    }
}

private void doCrop() {

    final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>();

    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setType("image/*");

    List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0);

    int size = list.size();

    if (size == 0) {
        Toast.makeText(this, "Cannot find image cropping application", Toast.LENGTH_SHORT).show();

        return;
    } else {
        intent.setData(mImageCaptureUri);

        intent.putExtra("outputX", 200);
        intent.putExtra("outputY", 200);
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("scale", true);
        intent.putExtra("return-data", true);

        if (size == 1) {

            Intent i = new Intent(intent);
            ResolveInfo res = list.get(0);
            i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
            startActivityForResult(i, CROP_FROM_CAMERA);

        } else {
            for (ResolveInfo res : list) {

                final CropOption co = new CropOption();
                co.title = getPackageManager().getApplicationLabel(res.activityInfo.applicationInfo);
                co.icon = getPackageManager().getApplicationIcon(res.activityInfo.applicationInfo);
                co.appIntent = new Intent(intent);
                co.appIntent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
                cropOptions.add(co);
            }

            CropOptionAdapter adapter = new CropOptionAdapter(getApplicationContext(), cropOptions);

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("Choose Crop App");
            builder.setAdapter(adapter,
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int item) {
                            startActivityForResult(
                                    cropOptions.get(item).appIntent,
                                    CROP_FROM_CAMERA);
                        }
                    });

            builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
                @Override
                public void onCancel(DialogInterface dialog) {

                    if (mImageCaptureUri != null) {
                        getContentResolver().delete(mImageCaptureUri, null, null);
                        mImageCaptureUri = null;
                    }
                }
            });

            AlertDialog alert = builder.create();
            alert.show();
        }
    }
}
吉涅什·安索达里亚(Jignesh Ansodariya)

拿一个ImageView像这样的类变量

ImageView addImage;

像这样更改您的点击方法

imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        iv_id = v.getId();

        addImage = (ImageView)v  // added code 

        showDialog(CONTEXT_MENU_ID);  
    }
});

最后在onActivityResult替换这条线

imageView.setImageBitmap(SelectedImage); //setting the image

addImage.setImageBitmap(SelectedImage); //setting the image

希望你能了解动手问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何动态地将行添加到特定的UITableView节?

来自分类Dev

动态地将数据添加到QTableView

来自分类Dev

如何动态地将ng-pattern属性添加到html元素?

来自分类Dev

如何动态地将外部定义的bean定义添加到Spring上下文?

来自分类Dev

如何动态地将子级添加到expandableListview的特定组中?

来自分类Dev

如何动态地将tinymce 4.x添加到textarea?

来自分类Dev

动态地将超链接添加到gridview

来自分类Dev

如何动态地将类添加到焦点输入字段的父div?

来自分类Dev

如何动态地将新数组添加到现有数组中

来自分类Dev

动态地将视图添加到布局

来自分类Dev

动态地将标签添加到JTabbedPane

来自分类Dev

如何动态地将一个类添加到Selectize选项中?

来自分类Dev

API调用后如何动态地将数据添加到网页?

来自分类Dev

如何动态地将样式添加到React样式属性?

来自分类Dev

如何动态地将更多Kafka主题添加到Logstash配置

来自分类Dev

如何动态地将值添加到嵌套字典?

来自分类Dev

如何动态地将列表添加到Map <DateTime,List <dynamic >>

来自分类Dev

如何动态地将ajax close listener添加到我的面板中?

来自分类Dev

如何动态地将ui-icon添加到我的标题面板?

来自分类Dev

如何动态地将QScrollArea添加到StackedWidget页面并向其中添加小部件?

来自分类Dev

如何动态地将ng-pattern属性添加到html元素?

来自分类Dev

如何仅使用JavaScript将JavaScript动态地添加到“ body”类?

来自分类Dev

如何动态地将画布添加到div元素?

来自分类Dev

动态地将属性添加到类

来自分类Dev

动态地将内容添加到标签页

来自分类Dev

如何动态地将子级添加到expandableListview的特定组中?

来自分类Dev

如何动态地将图像添加到imageView

来自分类Dev

动态地将元素添加到HTML页面

来自分类Dev

动态地将视图添加到RecyclerView

Related 相关文章

  1. 1

    如何动态地将行添加到特定的UITableView节?

  2. 2

    动态地将数据添加到QTableView

  3. 3

    如何动态地将ng-pattern属性添加到html元素?

  4. 4

    如何动态地将外部定义的bean定义添加到Spring上下文?

  5. 5

    如何动态地将子级添加到expandableListview的特定组中?

  6. 6

    如何动态地将tinymce 4.x添加到textarea?

  7. 7

    动态地将超链接添加到gridview

  8. 8

    如何动态地将类添加到焦点输入字段的父div?

  9. 9

    如何动态地将新数组添加到现有数组中

  10. 10

    动态地将视图添加到布局

  11. 11

    动态地将标签添加到JTabbedPane

  12. 12

    如何动态地将一个类添加到Selectize选项中?

  13. 13

    API调用后如何动态地将数据添加到网页?

  14. 14

    如何动态地将样式添加到React样式属性?

  15. 15

    如何动态地将更多Kafka主题添加到Logstash配置

  16. 16

    如何动态地将值添加到嵌套字典?

  17. 17

    如何动态地将列表添加到Map <DateTime,List <dynamic >>

  18. 18

    如何动态地将ajax close listener添加到我的面板中?

  19. 19

    如何动态地将ui-icon添加到我的标题面板?

  20. 20

    如何动态地将QScrollArea添加到StackedWidget页面并向其中添加小部件?

  21. 21

    如何动态地将ng-pattern属性添加到html元素?

  22. 22

    如何仅使用JavaScript将JavaScript动态地添加到“ body”类?

  23. 23

    如何动态地将画布添加到div元素?

  24. 24

    动态地将属性添加到类

  25. 25

    动态地将内容添加到标签页

  26. 26

    如何动态地将子级添加到expandableListview的特定组中?

  27. 27

    如何动态地将图像添加到imageView

  28. 28

    动态地将元素添加到HTML页面

  29. 29

    动态地将视图添加到RecyclerView

热门标签

归档