I am fetching data from URL into listview and i want whenever user will click on listview item then selected item details will be shown to user along with image and i am to send text data to another activity but not able to send image, but in singleitem activity i am getting blank space instead of image in imageview, how can i resolve this problem.Some code for reference:-
ListViewActivity Code:-
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
String artist = ((TextView) view.findViewById(R.id.artist)).getText().toString();
String duration = ((TextView) view.findViewById(R.id.duration)).getText().
toString();
String image = ((ImageView)view.findViewById(R.id.list_image))
.getImageMatrix().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_TITLE, title);
in.putExtra(KEY_ARTIST, artist);
in.putExtra(KEY_DURATION, duration);
in.putExtra(KEY_THUMB_URL, image);
startActivity(in);
SingleItemActivity Code:-
// getting intent data
Intent in = getIntent();
// Get XML values from previous intent
String title = in.getStringExtra(KEY_TITLE);
String artist = in.getStringExtra(KEY_ARTIST);
String duration = in.getStringExtra(KEY_DURATION);
Bitmap bitmap =(Bitmap) in.getParcelableExtra(KEY_THUMB_URL);
// Displaying all values on the screen
TextView lblName = (TextView) findViewById(R.id.name_label);
TextView lblCost = (TextView) findViewById(R.id.email_label);
TextView lblDesc = (TextView) findViewById(R.id.mobile_label);
ImageView image = (ImageView)findViewById(R.id.image_label);
image.setImageBitmap(bitmap);
lblName.setText(title);
lblCost.setText(artist);
lblDesc.setText(duration);
SingleItemXML Code:-
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image_label"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/rihanna"
/>
<TextView android:id="@+id/name_label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="25dip"
android:textStyle="bold"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:textColor="#43bd00"/>
<TextView android:id="@+id/email_label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#acacac"/>
<TextView android:id="@+id/mobile_label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"/>
</LinearLayout>
You should use buildDrawingCache()
and getDrawingCache()
to get the Bitmap from the ImageView, so in your onItemClick()
do as,
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
Intent intent = new Intent(context, next_activity.this);
intent.putExtra("image", bitmap);
startActivity(intent);
For, retrieving in next Activity,
bitmap = getIntent().getParcelableExtra("image");
in.putExtra(KEY_THUMB_URL, image);
Convert the image into BASE64 String format. and in new activity convert the BASE64 String in to image again..
public String bitMapToString(Bitmap bitmap) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
String stringBody = null;
try {
stringBody = Base64.encodeToString(b, Base64.DEFAULT).toString();
} catch (Exception e) {
toast(e.toString());
e.printStackTrace();
}
return stringBody;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.