Antes que nada decirte que la presentación del código es nefasta, ilegible, no puedes amontonarlo así como si fuera basura. Me ha costado sudores saber que coño código era eso.
Cita de: TickTack en 28 Febrero 2019, 12:33 PM
1) Tengo entendido que en los métodos setOnItemLongClickListener y setPositiveButton se envía cómo parámetro un método anónimo de las clases respectivas (AdapterView.OnItemLongClickListener y DialogInterface.OnClickListener). ¿Estoy en lo correcto?
No, el uso de estructuras clases, interfaces, funciones, etc.. anónimas se usa cuando se quiere implementar código que
únicamente se usará ahí, por lo contrario, si haces uso del mismo código en otras partes del programa lo suyo es crear una función, clase o lo que sea e instaciar o lo que sea. Además no queda legible.
Cita de: TickTack en 28 Febrero 2019, 12:33 PM
2) Si los métodos anónimos no le pertenecen a la clase a la cual le pertenece el atributo "datos", ¿cómo es posible que estos métodos tengan acceso a los atributos de una clase ajena?
3) Suponiendo que de alguna forma los métodos anónimos si tienen acceso a la clase a la cual le pertenece el atributo "datos", ¿cómo es posible que el método anónimo de la clase DialogInterface.OnClickListener tenga acceso a la variable local "posicion" del método anónimo de la clase AdapterView.OnItemLongClickListener?
Pues te contesto a las dos con una sola respuesta; por medio de los argumentos. Al dispararse el evento en el objeto
lv1, este llama a la función que tienes
sobreescrita,
onItemLongClick() y le pasa por parámetro los datos intrínsecos del objeto. Aparte para que posición sea visible en todo el ámbito, incluso de otros ámbitos dentro de éste, el código usa la instrucción
final.
PD Si el código estuviera bien tabulado con saltos de línea al final de cada punto y coma se vería más claro.