Foros del Web » Programando para Internet » Android »

Android sqlite , ArrayList , ListView

Estas en el tema de Android sqlite , ArrayList , ListView en el foro de Android en Foros del Web. Buenas días, Tengo un problema, al insertar un dato que esta pasando por sqlite y a su vez por otra Class llamada "User", cuando inserto ...
  #1 (permalink)  
Antiguo 06/03/2014, 22:14
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 13 años, 2 meses
Puntos: 3
Android sqlite , ArrayList , ListView

Buenas días,

Tengo un problema, al insertar un dato que esta pasando por sqlite y a su vez por otra Class llamada "User", cuando inserto el valor
pasado de una arrayList es obvio que obtengo la referencia, cómo puedo hacer para hacer un cast del objeto ArrayList<User> para coger el valor?



Tengo algo parecido a esto :

Código Javascript:
Ver original
  1. ArrayList<User> listUser= UserDataAccesObject.getAllUsersSqlite();

Dentro de la listView tengo : listUser, pero me tira una referencia.

com.example.xxxx.xxxx@4e....

Entiendo que listUser no contiene el get.Name()

Pero cuando intento hacer un cast del arraylist así :

Código Java:
Ver original
  1. Adapter = new ArrayAdapter<User>(...,   ...,((User)listUser).getName()

me dice que retorna un int, y me hace refactorizar el método.

Cómo lo puedo solucionar?

Última edición por drakgoku1; 06/03/2014 a las 22:25
  #2 (permalink)  
Antiguo 07/03/2014, 02:17
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: Android sqlite , ArrayList , ListView

Cita:
Iniciado por drakgoku1 Ver Mensaje
Pero cuando intento hacer un cast del arraylist así :

Código Java:
Ver original
  1. Adapter = new ArrayAdapter<User>(...,   ...,((User)listUser).getName()

me dice que retorna un int, y me hace refactorizar el método.

Cómo lo puedo solucionar?
No se si has revisado la documentación del ArrayAdapter. Si le das un vistazo y viendo que listUser es un "ArrayList<User>", se entiende que quieres usar el constructor número 5 de la lista de la API. En cambio tu le estas pasando esto:

Código Java:
Ver original
  1. Adapter = new ArrayAdapter<User>(...,   ...,((User)listUser).getName()

Es decir, estas haciendo un casting de un ArrayList a un único User y llamando a la propiedad getName(). Es decir que en lugar de pasar lo esperado, un ArrayList<T>, le estás pasando un String.

La solución seria pasar:

Código Java:
Ver original
  1. Adapter = new ArrayAdapter<User>(...,   ...,listUser)
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 07/03/2014, 05:19
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Android sqlite , ArrayList , ListView

No si así lo tengo, y me tira una referencia, como dije al principio :
com.example.xxxx.xxxx@4e....

Lo que quiero es dentro esta referencia muestre la referencia exacta de getName()
  #4 (permalink)  
Antiguo 07/03/2014, 05:41
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: Android sqlite , ArrayList , ListView

Cita:
Iniciado por drakgoku1 Ver Mensaje
No si así lo tengo, y me tira una referencia, como dije al principio :
com.example.xxxx.xxxx@4e....

Lo que quiero es dentro esta referencia muestre la referencia exacta de getName()
Con solo las dos lineas de código que has puesto para que te puedan ayudar, lo único que puedo ver es que una de ellas está mal.

Si quieres que te ayuden tendrás que poner de tu parte porque averiguar el motivo del error sin ver el código es imposible. Puede que no tenga nada que ver con esas dos lineas o que tengas algo mal picado,...
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 07/03/2014, 05:55
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Android sqlite , ArrayList , ListView

Cita:
Iniciado por Malenko Ver Mensaje
Con solo las dos lineas de código que has puesto para que te puedan ayudar, lo único que puedo ver es que una de ellas está mal.

Si quieres que te ayuden tendrás que poner de tu parte porque averiguar el motivo del error sin ver el código es imposible. Puede que no tenga nada que ver con esas dos lineas o que tengas algo mal picado,...
Yo he puesto como un mini ejemplo, muestro un poco el código entonces :

La parte en la que recorro el array (sqlite)
Código Java:
Ver original
  1. public ArrayList<User> getAllUsersSqlite() {
  2.         ArrayList<User> listUsers = new ArrayList<User>();
  3.  
  4.         Cursor cursor = db.query(UsersDatabase.TABLE_USERS, columns, null, null,
  5.                 null, null, null);
  6.         cursor.moveToFirst();
  7.         while (!cursor.isAfterLast()) {
  8.             User newUser = cursorUser(cursor);
  9.             listUsers.add(newUser);
  10.             cursor.moveToNext();
  11.         }
  12.      
  13.         cursor.close();
  14.         return listUsers;
  15.      }

En el programa principal :
Código Java:
Ver original
  1. UserDataAccesObject = new UserDAO(this);
  2. UserDataAccesObject.open();
  3. ArrayList<User> listUserNoOnline = UserDataAccesObject.getAllUsersSqlite();
  4. UserAdapter = new ArrayAdapter<User>(getApplicationContext(),   android.R.layout.simple_list_item_1,listUserNoOnline /*UserArrayListGet*/);
  5.         user_list.setAdapter(UserAdapter);

La referencia es muy bonita, pero prefiero mejor coger el método.
  #6 (permalink)  
Antiguo 07/03/2014, 06:09
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: Android sqlite , ArrayList , ListView

Código Java:
Ver original
  1. UserAdapter = new ArrayAdapter<User>(getApplicationContext(),   android.R.layout.simple_list_item_1,listUserNoOnline /*UserArrayListGet*/);
  2.         user_list.setAdapter(UserAdapter);

UserAdapter es el nombre de una variable? porque tiene pinta de ser un tipo (y que además hereda del BaseAdapter).
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 07/03/2014, 06:26
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Android sqlite , ArrayList , ListView

Cita:
Iniciado por Malenko Ver Mensaje
Código Java:
Ver original
  1. UserAdapter = new ArrayAdapter<User>(getApplicationContext(),   android.R.layout.simple_list_item_1,listUserNoOnline /*UserArrayListGet*/);
  2.         user_list.setAdapter(UserAdapter);

UserAdapter es el nombre de una variable? porque tiene pinta de ser un tipo (y que además hereda del BaseAdapter).
ArrayAdapter<User> UserAdapter; No hay más
  #8 (permalink)  
Antiguo 07/03/2014, 07:32
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Android sqlite , ArrayList , ListView

Estoy cansado de pensar for : y corriendo.

Es lo que no quería hacer.

Al final de tantos bucles tendré que hacer hilos para que no se colapse...

Etiquetas: arraylist, listview, sqlite
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:15.