![]() |
|
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
ListView con imágenes
Hola, llevo poco tiempo programando en Android y me ha surgido un problema en mi aplicación que no consigo resolver. Tengo una lista con imágenes y la imagen inicial (ImageView) es la misma para todos los items de la lista. Al hacer una pulsación larga sobre un item, aparece un menú contextual con la opción "Cambiar imagen". Al pulsar esta opción, en lugar de cambiarse la imagen del item seleccionado (que es lo que busco), se cambia siempre la imagen del primer item de la lista.
Éste es mi código: // Menú contextual @Override public boolean onContextItemSelected(MenuItem item) { final AdapterContextMenuInfo info2 = (AdapterContextMenuInfo) item.getMenuInfo(); switch(item.getItemId()) { case R.id.imagen: // Opción del menú contextual: cambiar imagen // Aquí quiero que al seleccionar esta opción, se cambie la imagen inicial del item seleccionado por otra imagen que está ubicada en la carpeta drawable, pero sólo se cambia la imagen del primer item, aunque pulse cualquier otro item. // Creo que tengo que hacer referencia a info2, que es la variable que indica qué elemento ha sido pulsado, pero no sé cómo hacerlo. ImageView iv = (ImageView) findViewById(R.id.ivImagen); iv.setImageResource(R.drawable.otraimagen); return true; } return super.onContextItemSelected(item); } Espero haberme explicado bien y que alguien me pueda ayudar, es urgente. |
|
|
|
#2
|
||||
|
||||
|
El problema está aquí:
ImageView iv = (ImageView) findViewById(R.id.ivImagen); Haciendo eso te va a devolver siempre el primer elemento que se llame R.id.ivImagen que se encuentre en la Activity, que en este caso siempre será el primer elemento del ListView. Lo que tienes que hacer es almacenar en alguna variable global la ImageView donde haces el OnItemLongClick (casteando la View a ImageView), y hacerle el setImageResource al ImageView de la variable. |
|
#3
|
||||
|
||||
|
Para que la variable sea global, tengo que declararla fuera del método onContextItemSelected():
ImageView iv; iv = (ImageView) findViewById(R.id.ivImagen); Y, después, dentro de este método tengo que hacer iv.setImageResource(R.drawable.otraimagen). ¿Es así? Última edición por desdroid Día 08/04/13 a las 13:00:18 |
|
#4
|
||||
|
||||
|
Sigues teniendo el mismo problema, no puedes hacer un findViewById sobre la Activity, siempre te devolverá el primer Item.
La ImageView que has pulsado es la View del "onCreateContextMenu" |
|
#5
|
||||
|
||||
|
Y, ¿cómo accedo al View del "onCreateContextMenu" desde el método "onContextItemSelected"?
Última edición por desdroid Día 08/04/13 a las 20:40:52 |
|
#6
|
||||
|
||||
|
¿Alguna sugerencia?
|
|
#7
|
||||
|
||||
|
kriogeN, ¿podrías ayudarme, por favor?
|
|
#8
|
||||
|
||||
|
Hola desdroid, yo ando empezando con el desarrollo Android desde hace poco pero con ensayo y error más o menos me voy apañando. Si quieres pásame el proyecto aunque sea con datos falsos e intento solucionar tu error.
Salu2. |
|
#9
|
||||
|
||||
|
Una solución rápida es que en el getView del Adapter hagas un setOnTouchListener sobre la View y esa View la pongas en la variable global en el DOWN.
Una solución mejor sería usar el setOnLongClickListener sobre la View en el getView del Adapter, pero creo que para tu caso te conllevaría modificar bastante más el código. |
|
#10
|
||||
|
||||
|
Cita:
Al principio de la clase tengo declarada la variable de instancia ImageView iv; Dentro del método sobreescrito protected void OnListItemClick (ListView l, View v, int position, long id) tengo: iv = (ImageView) v.findViewById(R.id.ivImagen); para actuar sobre el elemento pulsado en la lista Ahora, lo que quiero es llamar a este iv desde el método sobreescrito protected void OnActivityResult (int requestCode, int resultCode, Intent data) para asignarle otra imagen al item seleccionado mediante iv.setImageBitmap(bitmap); Pero el problema creo que está en que el método OnListItemClick es protected y no puedo acceder a dicha variable. ¿No hay ninguna forma de acceder a la variable iv de este método desde la misma clase? Espero haberme explicado bien. |
|
#11
|
||||
|
||||
|
Subo el post, a ver si alguien me ayuda.
|
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 22:21:32 (GMT +1)
HTCMania: líderes desde el 2007






