Cambiar la imagen de ImageView mediante progtwigción en Android

Cuando cambio la imagen mediante progtwigción, ¿se muestra una imagen nueva en la parte superior de la imagen anterior que se establece originalmente en el archivo de diseño?

Aquí hay un fragmento de mi archivo de diseño:

    

Y el código que establece el imageView:

  @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { //Answers if(answersGroup != null) answersGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // int index = answersGroup.indexOfChild(findViewById(answersGroup.getCheckedRadioButtonId())); qImageView = (ImageView) V.findViewById(R.id.qStatusImage); if(ans ==0 || ans == 5){ // qSV.setImageResource(0); qImageView.setImageResource(R.drawable.thumbs_up); } else qImageView.setImageResource(R.drawable.thumbs_down); } }); 

¿Qué me estoy perdiendo?

Eso sucede porque está configurando el src de ImageView lugar del fondo.

Use esto en su lugar:

 qImageView.setBackgroundResource(R.drawable.thumbs_down); 

Aquí hay un hilo que habla sobre las diferencias entre los dos métodos.

Usar en XML:

 android:src="@drawable/image" 

Uso de la fuente:

 imageView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.your_image)); 
 qImageView.setImageResource(R.drawable.img2); 

Creo que esto te ayudará

En su XML para la vista de imagen, donde tiene android:background="@drawable/thumbs_down cambie esto a android:src="@drawable/thumbs_down"

Actualmente está colocando esa imagen como fondo de la vista y no la imagen real en ella.

Respuesta corta

Simplemente copie una imagen en su carpeta res/drawable y use

 imageView.setImageResource(R.drawable.my_image); 

Detalles

La variedad de respuestas puede causar un poco de confusión. Tenemos

  • setBackgroundResource()
  • setBackgroundDrawable()
  • setBackground()
  • setImageResource()
  • setImageDrawable()
  • setImageBitmap()

Los métodos con Background en su nombre pertenecen a la clase View , no a ImageView específicamente. Pero como ImageView hereda de View también puedes usarlos. Los métodos con Image en su nombre pertenecen específicamente a ImageView .

Todos los métodos de View hacen lo mismo entre sí (aunque setBackgroundDrawable() está en desuso), así que solo nos centraremos en setBackgroundResource() . Del mismo modo, todos los métodos de ImageView hacen lo mismo, por lo que solo nos centraremos en setImageResource() . La única diferencia entre los métodos es el tipo de parámetro por el que pasas.

Preparar

Aquí hay un FrameLayout que contiene un ImageView . El ImageView inicialmente no tiene ninguna imagen. (Solo agregué FrameLayout para poder ponerle un borde. De esta forma puedes ver el borde de ImageView ).

enter image description here

       

A continuación, compararemos los diferentes métodos.

setImageResource ()

Si usa setImageResource() ImageView, la imagen conservará su relación de aspecto y se ajustará a su tamaño. Aquí hay dos ejemplos de imágenes diferentes.

  • imageView.setImageResource(R.drawable.sky);
  • imageView.setImageResource(R.drawable.balloons);

enter image description here

setBackgroundResource ()

El uso de setBackgroundResource() de setBackgroundResource() , por otro lado, hace que el recurso de imagen se estire para llenar la vista.

  • imageView.setBackgroundResource(R.drawable.sky);
  • imageView.setBackgroundResource(R.drawable.balloons);

enter image description here

Ambos

La imagen de fondo de la Vista y la imagen de ImageView se dibujan por separado, por lo que puede establecer ambas.

 imageView.setBackgroundResource(R.drawable.sky); imageView.setImageResource(R.drawable.balloons); 

enter image description here

En XML Design

 android:background="@drawable/imagename android:src="@drawable/imagename" 

Imagen extraíble mediante código

 imageview.setImageResource(R.drawable.imagename); 

Imagen del servidor

  ## Dependency ## implementation 'com.github.bumptech.glide:glide:4.7.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1' Glide.with(context).load(url) .placeholder(R.drawable.image) .into(imageView); ## dependency ## implementation 'com.squareup.picasso:picasso:2.71828' Picasso.with(context).load(url) .placeholder(R.drawable.image) .into(imageView); 

Puedes usar

 val drawableCompat = ContextCompat.getDrawable(context, R.drawable.ic_emoticon_happy) 

o en java java

 Drawable drawableCompat = ContextCompat.getDrawable(getContext(), R.drawable.ic_emoticon_happy)