SetImageBitmap no tiene efecto visible

Tengo una matriz de bytes que contiene una imagen obtenida de la red. Estoy perezosamente cargarlos en mi actividad de interfaz de usuario (o estoy tratando de al menos: D) utilizando Bitmapfactory, BitmapDrawable y setImageDrawable. Aquí está mi código:

RelativeLayout r =(RelativeLayout) adap.getGroupView(Integer.parseInt(groupPos), false, null, null); ImageView iv = (ImageView) r.findViewById(R.id.imgGruppo); Log.w("",""+raw_img.length); Bitmap bm = BitmapFactory.decodeByteArray(raw_img, 0, raw_img.length); Drawable drawable = new BitmapDrawable(bm); Log.i("","pre setimage"); iv.setImageDrawable(drawable); //added for testing only, with no effects. //((ELA) Activity_Titoli_2.this.getExpandableListAdapter()).notifyDataSetChanged(); //ELA is my expandable list adapter Log.i("","post setimage"+bm.getRowBytes()); //just to see that i have actual data in raw_img and such 

Aquí está el XML involucrado

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayoutTitoli2_gruppo" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textNomeGruppo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Large Text" android:textColor="#FF0000" android:padding="14dp" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textNoteGruppo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textNomeGruppo" android:paddingLeft="14dp" android:paddingRight="14dp" android:paddingBottom="7dp" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall" /> <ImageView android:id="@+id/imgGruppo" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignParentRight="true" android:src="@drawable/icon" /> </RelativeLayout> 

He añadido "android: src …" sólo para comprobar si la imagen es visible, y lo es. El único problema es que no puedo cambiarlo! He intentado setImageBitmap, utilizando sólo el mapa de bits i creado, he intentado setimageDrawable la creación de un BitmapDrawable, pero sin efectos en absoluto. Sin errores, sin nada. Por favor, ¿dónde está el error? gracias

Mi conjetura es que usted no está haciendo esto en el hilo derecho. Puede probar esto llamando a este código, luego girando la pantalla (o abriendo el teclado físico, si tiene uno de esos teléfonos). Esto hará que la interfaz de usuario se actualice.

De todos modos, ¿en qué contexto estás llamando? Hilo de fondo? Desea actualizar la interfaz de usuario en el subproceso de interfaz de usuario, o tendrá que llamar a algo como "invalidar" en la vista para obtenerlo para forzar un re-dibujo.

Es un problema de memoria, puede corregirlo utilizando este método como se indica a continuación, La opción "inSampleSize" devolverá una imagen más pequeña y ahorrará memoria. Sólo puede llamar a esto en el ImageView.setImageBitmap

  private Bitmap loadImage(String imgPath) { BitmapFactory.Options options; try { options = new BitmapFactory.Options(); options.inSampleSize = 4;// 1/4 of origin image size from width and height Bitmap bitmap = BitmapFactory.decodeFile(imgPath, options); return bitmap; } catch (Exception e) { e.printStackTrace(); } return null; } 

La siguiente solución funcionó para mí. Utilicé la biblioteca de Picasa.

 private Uri getImageUri(Bitmap inImage) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); String path = MediaStore.Images.Media.insertImage(activity.getContentResolver(), inImage, "Title", null); return Uri.parse(path); } public void bitmapIntoImageView(ImageView imageView, Bitmap bitmap, Activity activity){ Uri imageUri = getImageUri(bitmap); Picasso.with(activity).load(imageUri).into(imageView); } public void imagePathIntoImageView(ImageView imageView, String imagePath, Activity activity) { Uri imageUri = Uri.fromFile(new File(imagePath)); Picasso.with(activity).load(imageUri).into(imageView); } 

Picasa: http://square.github.io/picasso/

Llame a la siguiente función para establecer el mapa de bits en ImageView

 bitmapIntoImageView(imageView, bitmap, MainActivity.this) 
  • Cómo obtener el ancho y la altura de una vista de imagen en android?
  • ImageView no mostrará la imagen cuando se establezca por setImageBitmap ()
  • Cómo cambiar dinámicamente la altura de ImageView
  • Vista de imagen que no envuelve contenido
  • Gire la vista de imagen alrededor de su centro sin cortar sus bordes
  • La aplicación se bloquea al agregar un ImageView
  • El video no se detiene en el fragmento ViewPager
  • Cómo recortar Bitmap Center like imageview?
  • Escala de ImageView al ancho del dispositivo
  • Android imageview toma espacio extra negro
  • Cambiar el tamaño de ImageView para ajustarse a la relación de aspecto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.