我的应用程序中有一个Listview,它由自定义适配器和自定义对象填充了textview和imageview,现在我希望当我在Listview上单击图像时,它应该在另一个活动中全屏打开,我该怎么做?
我有一个套接字连接的API,它带来了一个名为image的Byte数组,我将其添加到列表视图中。
这是代码-->
@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元素中吐司Text。这是代码-->
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();
}
});
在具有ListView
的"活动"内部,一旦从所选Bitmap
:中获得byte[]
,就可以在onItemClickListener
中执行此操作
Intent intent = new Intent(myListActivity., ImageActivity.class);
Bundle bundle = new Bundle();
bundle.putByteArray("image", imageArray);
intent.putExtras(bundle);
startActivity(intent);
基本上,这会启动另一个"活动",在Bundle
中传递byte[]
。
然后,在显示全屏图像的"活动"中,您可以从Bundle
中取出byte[]
,并将其解码为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
}
}
希望能有所帮助!