![]() |
|
| 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
|
||||
|
||||
|
Ayuda con ArrayList y ContentValues en DBController.java
Hola a todos.
A ver si alguien me puede echar una mano con este tema. Tengo una aplicación con una base de datos que me devuelve resultados de acuerdo a a querys SQL. Todas esas querys las tengo en el archivo DBController.java que es desde donde creo, actualizo y ejecuto la base de datos. Cada vez que tengo que definir una nueva query SQL copio, pego y adapto un pedazo de codigo como el siguiente: Código:
public ArrayList<HashMap<String, String>> DevolverResultado1() {
ArrayList<HashMap<String, String>> listado12pa;
listado12pa = new ArrayList<HashMap<String, String>>();
String selectQuery = "SELECT * FROM nombretabla WHERE campo1 LIKE 'palabra%' AND campo2!='--' ORDER BY campo3";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
HashMap<String, String> map = new HashMap<String, String>();
map.put("id", cursor.getString(0));
map.put("campo1", cursor.getString(1));
map.put("campo2", cursor.getString(2));
map.put("campo3", cursor.getString(3));
map.put("campo4", cursor.getString(4));
map.put("campo5", cursor.getString(5));
map.put("campo6", cursor.getString(6));
map.put("campo7", cursor.getString(7));
map.put("campo8", cursor.getString(8));
map.put("campo9", cursor.getString(9));
map.put("campo10", cursor.getString(10));
map.put("campo11", cursor.getString(11));
map.put("campo12", cursor.getString(12));
map.put("campo13", cursor.getString(13));
map.put("campo14", cursor.getString(14));
map.put("campo15", cursor.getString(15));
map.put("campo16", cursor.getString(16));
map.put("campo17", cursor.getString(17));
map.put("campo18", cursor.getString(18));
map.put("campo19", cursor.getString(19));
map.put("campo20", cursor.getString(20));
map.put("campo21", cursor.getString(21));
map.put("campo22", cursor.getString(22));
map.put("campo23", cursor.getString(23));
map.put("campo24", cursor.getString(24));
map.put("campo25", cursor.getString(25));
map.put("campo26", cursor.getString(26));
map.put("campo27", cursor.getString(27));
map.put("campo28", cursor.getString(28));
map.put("campo29", cursor.getString(29));
listado12pa.add(map);
} while (cursor.moveToNext());
}
return listado12pa;
}
Antes trabajaba con un "contentValues" y tiraba menos lineas, pero ahora e implantado otros métodos en toda la aplicación y necesito optimizar con estos "arrayslist", ademas de que para mi es más cómodo tirar las consultas SQL literalmente y no con lineas del tipo "db.execSQL" como hacia con el "contentValues". Gracias de antemano. |
|
|
|
#2
|
||||
|
||||
|
La forma correcta es tener modelos, un modelo por cada tabla, y no trabajar con HashMap.
Por ejemplo tienes la tabla "persona" que tiene los campos "id", "nombre", "apellidos" Creas una clase llamada Persona con los mismos campos en forma de propiedades, y un método: public static Persona fromCursor(Cursor c) { Persona p = new Persona(); p.id = c.getString(0); p.nombre = c.getString(1); p.apellidos = c.getString(2); return p; } De tal forma que en tu método, en vez de devolver un ArrayList<HashMap<String,String>> devuelves un ArrayList<Persona> Y en vez de crear el HashMap y meterle todos los campos haces: listado12pa.add(Persona.fromCursor(cursor)); Con esto lo que consigues es que en todos los métodos donde trabajas con la tabla Persona sólo tendrás que escribir 1 línea. Además tu código será más legible, porque donde llamas a DevolverResultado1 verás que es una Persona, y no un HashMap que puede ser cualquier cosa. Lógicamente necesitas 1 modelo por cada tabla. Pero si tienes 10 métodos que usan a la tabla "persona" ahorras mucho código y claridad. |
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 17:52:04 (GMT +1)
HTCMania: líderes desde el 2007





