我有一个带有复选框imageview和textview的自定义列表视图,listview下面有一个按钮。点击该按钮后,我必须将所有选中的项目详细信息传递给另一个活动并显示在其他列表视图中。我能够传递选定的值但无法传递图像。图像位于可绘制文件夹中。请帮助我。
以下是代码:
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);
}
});
}
答案 0 :(得分: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);
}
这可行,但这将是一个巨大的矫枉过正。一个人可以通过一条路径并以更轻松的方式完成它
答案 1 :(得分:1)
您可以将所有图像作为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);