我的app中有一个Listview,它由textview和imageview填充自定义适配器和自定义对象,现在我希望当我点击listview上的图像时它应该在另一个活动中作为全屏打开,应该怎么做我这样做?
我有一个套接字连接的API,它带有一个名为image的字节数组,我将它添加到列表视图中。
这是代码 - >
@Override
public void onBinaryMessage(byte[] image)
{
Bitmap receivedImage=BitmapFactory.decodeByteArray(image,0,image.length);
float scale=1;
int width = receivedImage.getWidth();
int height = receivedImage.getHeight();
float scaleHeight = (float)height/(float)200;
float scaleWidth = (float)width /(float)200;
if (scaleWidth < scaleHeight)
{scale = scaleHeight;}
else
{
scale = scaleWidth;
}
Bitmap bitmaped = Bitmap.createScaledBitmap(receivedImage, (int)(width/scale), (int)(height/scale), true);
addImage(new Message(bitmaped,false,false));
现在当点击时我应该传递给意图,因为我可以获得列表视图中的这个图像,根据我当前的代码,我可以在listview textView元素中提供文本。 这是代码 - &gt;
listView1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.v("Module Item Trigger", "Module item was triggered");
Toast.makeText(getApplicationContext(),"this is ==>",Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:1)
在使用ListView
的活动内部,您可以在onItemClickListener
中使用byte[]
中的Bitmap
后执行此操作:
Intent intent = new Intent(myListActivity., ImageActivity.class);
Bundle bundle = new Bundle();
bundle.putByteArray("image", imageArray);
intent.putExtras(bundle);
startActivity(intent);
基本上,这会启动另一个活动,在byte[]
中传递Bundle
。
然后在显示全屏图片的活动中,您可以从byte[]
中获取Bundle
并将其解码为Bitmap
:
@Override
protected void onCreate(Bundle bundle)
{
if(bundle != null)
{
byte[] image = bundle.getByteArray("image");
Bitmap receivedImage = BitmapFactory.decodeByteArray(image,0,image.length);
// Do something with receivedImage
}
}
希望有所帮助!