【问题标题】:Pass checked multiple images from one activity to another将已检查的多个图像从一项活动传递到另一项活动
【发布时间】:2016-07-01 06:05:08
【问题描述】:

我有一个带有复选框 imageview 和 textview 的自定义列表视图,并且列表视图下方有一个按钮。单击该按钮时,我必须将所有选中的项目详细信息传递给另一个活动并显示在其他列表视图中。我能够传递选定的值,但无法传递图像。图像位于可绘制文件夹中。请帮助我,谢谢。

代码如下:

subscribe.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            String data = "";
            ArrayList<Item> stList = ((OurServiceAdapter) nAdapter)
              .getAllData();

            for (int i = 0; i < stList.size(); i++) {
                Item singleStudent = stList.get(i);
                if (singleStudent.isCheckbox() == true) {
                       name.add(singleStudent.getName().toString());
                       img.add(singleStudent.getImage());
                 data = data + "\n" + singleStudent.getName().toString();



                }

               }
              // byte[] imgs = singleStudent.getImage();
               Intent intent = new Intent(ActivityOurServices.this, ActivityServicesForm.class);
               intent.putStringArrayListExtra("key", name);
               //intent.putIntegerArrayListExtra("img", img);
               startActivity(intent);



        }
    });
}

【问题讨论】:

  • 简单的方法是获取选中项的位置,并在另一个活动中使用 switch 语句来获取正确的图像
  • 我没有得到你能提供一个样品吗
  • 照片的数量是多少?是常数?
  • 现在是 10,但可以增加

标签: android image listview checkbox


【解决方案1】:

您可以将其作为字节数组传递并构建位图以在下一个屏幕上显示。但是使用意图我们可以发送小图像,如缩略图、图标等。否则它会导致绑定失败。

发件人活动

Intent _intent = new Intent(this, newscreen.class);
Bitmap _bitmap; // your bitmap
ByteArrayOutputStream _bs = new ByteArrayOutputStream();
_bitmap.compress(Bitmap.CompressFormat.PNG, 50, _bs);
i.putExtra("byteArray", _bs.toByteArray());
startActivity(i);

接收者活动

if(getIntent().hasExtra("byteArray")) {
ImageView _imv= new ImageView(this);
Bitmap _bitmap = BitmapFactory.decodeByteArray(
        getIntent().getByteArrayExtra("byteArray"),0,getIntent().getByteArrayExtra("byteArray").length);        
_imv.setImageBitmap(_bitmap);
}

这会起作用,但这将是一个巨大的矫枉过正。人们可以通过一条路径并以一种更轻松的方式完成它

【讨论】:

  • 我必须传递多张图片我将如何附加它
  • 是的,你可以通过putExtra中的不同键传递多张图片。但是记得传递小图片。
【解决方案2】:

您可以将所有图像作为 Integer arrayList 传递:

//first : for each imageView inside list you must to set tag ,for example ;
imageView0.setTag(R.drawable.image_0); 
imageView1.setTag(R.drawable.image_1);
.
.
. 
imageViewN.setTag(R.drawable.image_N);

现在当你按下按钮时:

ArrayList<Integer> checkedImageSrcId = new ArrayLIst<Integer> ;

for (int i = 0; i < stList.size(); i++) {
            Item singleStudent = stList.get(i);
            if (singleStudent.isCheckbox() == true) {
                   name.add(singleStudent.getName().toString());
                  // img.add(singleStudent.getImage());
                  // you most to get checked imageViews Tag  and i dont have an idea about how to get those
                  checkedImageSrcId.add( getImageViewTagAtPostion(i));
             data = data + "\n" + singleStudent.getName().toString();

            }

           }
          // byte[] imgs = singleStudent.getImage();
           Intent intent = new Intent(ActivityOurServices.this, ActivityServicesForm.class);
           intent.putStringArrayListExtra("key", name);
           intent.putIntegerArrayListExtra("img", checkedImageSrcId);
           startActivity(intent);

【讨论】:

  • 你好兄弟我正在使用列表视图所以我应该在哪里添加这个标签
  • 以及如何在第二个活动中提取它
  • 在 listView 适配器中设置标签。你在哪里设置 imageView drawable src ?
  • 只有一个图像视图,我通过 pojo 类设置它
  • ArrayList checkedImageSrc = extras.getIntArray("img");
猜你喜欢
  • 2012-01-24
  • 1970-01-01
  • 2014-09-19
  • 2012-03-05
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
相关资源
最近更新 更多