处理多个imageview数据

时间:2018-03-18 11:37:21

标签: android imageview

我是Android开发的新手。

我目前没有任何代码可以显示,但我需要帮助我的想法/项目的逻辑。

所以这是场景:

我有3个空的Imageview:

ImgView1
ImgView2
ImgView3

如果我想添加图像,应将图像插入ImgView3,如果我添加另一个图像,则应将其插入ImgView2,依此类推。

现在我的问题是:

当我想删除ImgView3中的图像时,ImgView2中的图像应该在ImgView3中传输。

就像这样:

Transferring the image from ImgView2 to ImgView3

ImgView1图像应转移到ImgView2:

ImgView1 to ImgView2

所以最后:

  • ImgView1 - 无图像
  • ImgView2 - 有图片
  • ImgView3 - 有图片

还有另一种情况,我们假设所有的imageview都有图像。

如果用户在ImgView2中删除了图像,ImgView1应该将其图像传输到ImgView2。

我目前没有正确的代码,因为我正在研究它的逻辑。

2 个答案:

答案 0 :(得分:0)

第一部分尝试这个逻辑:

onAdd(Bitmap bitmap)
{
  if (ImgView3.getBitmap == null)
      {
        ImagView3.setImageBitmap(bitmap);
      }
  else
      {
        if(ImgView2.getBitmap == null)
           {
               ImagView2.setImageBitmap(bitmap);
           }
           else
           {
              if(ImgView1.getBitmap == null)
                 {
                     ImagView1.setImageBitmap(bitmap);
                 }
           }
      }
}

删除:

DeleteFirstImage()
{
  ImgView3.setImageBitmap(null);
  if(ImgView3.getBitmap() == null)
  {
    ImgView3.setImageBitmap(ImgView2.getBitmap());
    ImgView2.setImageBitmap(null);
    if(ImgView2.getBitmap() == null)
    {
      ImgView2.setImageBitmap(ImgView1.getBitmap());
      ImgView1.setImageBitmap(null);
      if(imagView1.getBitmap == null)
      {
         //Do nothing, this is OK :)
      }
    } 
  }
}

以类似的方式创建DeleteSecondImage()以及DeleteFirstImage()

答案 1 :(得分:0)

这里有一些东西让你开始(我还没有测试过,我很快就做到了)

首先,创建一个ImageViews数组:

private ImageView[] imageViews = new ImageView[]{mImageView1, mImageView2, mImageView3};

这是设定方法:

private void setBitmap(Bitmap bitmap) {
        for (int i = imageViews.length - 1; i >= 0; i--) {
            ImageView imageView = imageViews[i];
            if (imageView.getDrawable() == null) {
                imageView.setImageBitmap(bitmap);
                break;
            }
        }

    }

这是删除方法:

private void deleteBitmap(int position) {
        ImageView imageViewToDelete = imageViews[position];

        if (imageViewToDelete.getDrawable() == null) {
            // We don't have anything here, so return
            return;
        }

        for (int i = position; i >= 0; i--) {
            ImageView imageView = imageViews[i];
            imageView.setImageBitmap(null);

            if (i != 0) {
                ImageView previousImage = imageViews[i - 1];
                if (previousImage.getDrawable() != null) {
                    BitmapDrawable bitmapDrawable = (BitmapDrawable) previousImage.getDrawable()
                    if (bitmapDrawable != null) {
                        Bitmap previousBitmap =  bitmapDrawable.getBitmap();
                        imageView.setImageBitmap(previousBitmap);
                    }
                }
            }
        }
    }