Android: ¿Cómo comparar el recurso de una imagen con R.drawable.imagename?

Estoy trabajando en una aplicación de ejemplo en la que necesito obtener el recurso de una vista de imagen en un oyente onClick y compararlo con la fuente de imagen que conozco. Si los recursos son los mismos, quiero lanzar otra intención. El problema que estoy enfrentando ahora es acceder a ImageView (y por lo tanto a su entero de Id de recurso) para comparar con el recurso extraíble.

@Override // should int be final ?? public View getView(final int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // if it's not recycled, initialize some attributes imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // This is not working and I need to find a way to solve this >> if (((ImageView)v).getResources().getInteger(0) == R.drawable.imageToCompare) { // do nothing } else { // do something } 

No se puede obtener un ID de ImageView un ImageView . Pero si lo configura desde el código, también puede almacenarlo en algún lugar, por ejemplo en el campo de etiqueta. Echa un vistazo a la pregunta similar: ¿A quién comparar un fondo de recursos de imágenes TextView con un R.drawable.bg_image para el interruptor .

 if(((ImageView)v).getDrawable().getConstantState() == MainActivity.this .getResources().getDrawable(R.drawable.unlock) .getConstantState())) { // Do Something } 

La manera apropiada es al usuario setTag() y getTag . Supongo que usted está haciendo su propio adaptador.

En el método public View getView(int position, View convertView, ViewGroup parent) , se establece la etiqueta en Imageview cuando se añaden otras propiedades.

 ImageView temp = (ImageView) v.findViewById(resId); temp.setImageResource(icon); temp.setTag(icon); //drawable unique ID will be my identifier here 

Entonces en el onClick usted compara simplemente View v con su identificación drawable . Por ejemplo, quería cambiar la imagen en clic y lo codifiqué de esta manera. Tome nota de cómo también cambio de etiqueta cuando establezco un nuevo dibujable

  img.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if ((Integer)v.getTag() == R.drawable.current_img) { v.setBackgroundResource(R.drawable.new_img); v.setTag(R.drawable.new_img); } } }); 
  • Android permiso de creación de base de datos
  • Asegúrese de que las fotos se guardan con la misma orientación que se tomaron?
  • Fragmento sin una vista se bloquea en el cambio de configuración
  • El paquete choca con un tipo en código java
  • Android java.lang.IllegalMonitorStateException: objeto no bloqueado por hilo antes de esperar ()
  • IText Android - Añadir texto a PDF existente
  • Cómo guardar una imagen de Android Processing Sketch
  • AvailableProcessors () devuelve 1 para los teléfonos dualcore
  • Observable vs Flujo rxJava2
  • ¿Por qué Android no imprime el seguimiento de la pila?
  • No se encontró el archivo de Android- R.java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.