elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Android - Componente ListView (grabar sus datos con la clase SharedPreferences)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Android - Componente ListView (grabar sus datos con la clase SharedPreferences)  (Leído 1,877 veces)
TickTack


Desconectado Desconectado

Mensajes: 434


CipherX


Ver Perfil
Android - Componente ListView (grabar sus datos con la clase SharedPreferences)
« en: 28 Febrero 2019, 12:33 pm »

Hola a todos,

antes de hacer mis preguntas quisiera mostrarles un código:

Código:
lv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
final int posicion=i;
AlertDialog.Builder dialogo1 = new AlertDialog.Builder(MainActivity.this); dialogo1.setTitle("Importante");
dialogo1.setMessage("¿ Elimina este teléfono ?"); dialogo1.setCancelable(false); dialogo1.setPositiveButton("Confirmar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogo1, int id) {
String s=datos.get(posicion);
StringTokenizer tok1=new StringTokenizer(s,":");
String nom=tok1.nextToken().trim();
SharedPreferences.Editor elemento=prefe1.edit(); elemento.remove(nom);
elemento.commit();
datos.remove(posicion);
adaptador1.notifyDataSetChanged(); } });});

Teniendo en cuenta que "datos" es un objeto de la clase ArrayList<String>:

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?

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?

Gracias y saludos


« Última modificación: 28 Febrero 2019, 13:31 pm por TickTack » En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Android - Componente ListView (grabar sus datos con la clase SharedPreferences)
« Respuesta #1 en: 7 Marzo 2019, 00:46 am »

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.

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.

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.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
listview y background en android
Programación General
basickdagger 0 3,394 Último mensaje 25 Agosto 2011, 00:47 am
por basickdagger
ListView - Winsock - Datos VB 6
Análisis y Diseño de Malware
Enemy 0 1,859 Último mensaje 28 Julio 2014, 03:26 am
por Enemy
Ayuda llamar a una clase y sus métodos dentro de otra clase (Android)
Java
LikeVodka 1 6,224 Último mensaje 19 Abril 2015, 11:22 am
por MNicolas
Insertar y consultar datos desde componente
.NET (C#, VB.NET, ASP)
el_doctor 0 1,685 Último mensaje 22 Abril 2016, 18:10 pm
por el_doctor
Android - Como regresar al ListView ?
Java
MaX2 3 2,095 Último mensaje 25 Mayo 2019, 20:32 pm
por MaX2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines