AprendeAndroid.com - FORO
»
AREA DE DESARROLLO
»
Android Foro
»
Listview personalizada cargando datos de BD (Solucionado)
Posición: Member
Grupos: Registered
Registrado: 08/10/2014(UTC) Mensajes: 14
Agradecimientos: 4 veces
|
Hola! Estoy siguiendo tu curso y francamente estoy encantado, enhorabuena. He llegado hasta el tema de la base de datos, pues de momento (eso creo) me es suficiente para lo que quiero hacer en mi app. He conseguido insertar registros y recuperarlos mostrándolos en una listview simple. Ahora quiero presentar los datos en una listview personalizada pero no soy capaz... :-( Me he leído unas cuantas veces este apartado "http://www.aprendeandroid.com/l4/interface4.htm" pero no hay manera... Hacer que se muestre la lista "compleja" ya lo tengo, pero no consigo ver cómo cargarla con los datos que leo en mi cursor. En la clase "adaptador" tengo lo siguiente: class Adaptador extends ArrayAdapter<Object> {
//Declaramos un array con los datos que se mostrarán en la lista private static Tool[] datos = new Tool [] {
new Tool ("Titulo 1","Subtítulo largo 1"), new Tool ("Titulo 2","Subtítulo largo 2"), new Tool ("Titulo 3","Subtítulo largo 3"), new Tool ("Titulo 4","Subtítulo largo 4"), new Tool ("Titulo 5","Subtítulo largo 5"), new Tool ("Titulo 6","Subtítulo largo 6"), new Tool ("Titulo 7","Subtítulo largo 7"), new Tool ("Titulo 8","Subtítulo largo 8"), new Tool ("Titulo 9","Subtítulo largo 9"), new Tool ("Titulo 10","Subtítulo largo 10"), new Tool ("Titulo 11","Subtítulo largo 11") }; Y es lo que muestra en pantalla, pero no sé dónde informar este array con mi cursor, ni cómo hacerlo.... ¿me puedes echar una mano? Muchas gracias!! Editado por un usuario jueves, 9 de octubre de 2014 7:48:04(UTC)
| Razón: No especificada
|
|
|
|
Posición: Administration
Grupos: Administrators
Registrado: 07/10/2010(UTC) Mensajes: 436 ![Hombre Hombre](/YAF/Themes/flatearth/male.gif) Ubicación: España Agradecimientos: 38 veces Fue agradecido: 49 vez/veces in 48 publicación(es).
|
Hola! Yo uso este codigo para hacer una lista desde un cursor: 1. llamo este metodo para cargar la lista Código:
public void Cargar_Lista() {
db1 = new BaseDeDatos(ListaActivity.this, "db_medicine", null,
BaseDeDatos.v_db);
db = db1.getWritableDatabase();
cursor = db
.rawQuery(
"SELECT nombre, descripcion, dosis, foto, _id, fecha FROM medicine ORDER BY nombre",
null);
// Indicamos al adaptador los datos que vamos a mostrar en el ListView
adapter = new ItemListAdapter(this, cursor);
setListAdapter(adapter);
db1.close();
}
2. hay que tener una clase creada con el nombre de ItemListAdapter Código:
public class ItemListAdapter extends CursorAdapter {
// Adaptador para mostrar un Cursor en un ListView
private LayoutInflater inflater;
ImageView foto;
// Constructor de la clase
public ItemListAdapter(Context context, Cursor c) {
super(context, c, true);
this.inflater = LayoutInflater.from(context);
}
// Creamos una instancia del layout para cada elemento
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view = inflater.inflate(R.layout.itemrow, parent, false);
return view;
}
// Asignamos cada valor a un campo distinto del layout
@Override
public void bindView(View view, Context context, Cursor cursor) {
//LinearLayout itemFondo = (LinearLayout) view.findViewById(R.id.itemFondo);
LinearLayout itemList = (LinearLayout) view.findViewById(R.id.itemList);
LinearLayout LayoutFecha = (LinearLayout) view.findViewById(R.id.LayoutFecha);
TextView itemFecha = (TextView) view.findViewById(R.id.itemFecha);
TextView itemCaduca = (TextView) view.findViewById(R.id.itemCaduca);
//Escribo dato nombre en el elemento de la lista
TextView itemName = (TextView) view.findViewById(R.id.itemName);
itemName.setText(cursor.getString(cursor.getColumnIndex("nombre")));
//Escribo dato descripcion en el elemento de la lista
TextView itemDescription = (TextView) view.findViewById(R.id.itemDescription);
itemDescription.setText(cursor.getString(cursor.getColumnIndex("descripcion")));
/*
* //Extraer el Mes String fechaNumero =
* cursor.getString(cursor.getColumnIndex("fecha")); String outM = "";
* for (int i = 0; i < fechaNumero.length(); i++) { if
* (fechaNumero.charAt(i) != '-') { outM = outM + fechaNumero.charAt(i);
* } else { break; } }
*/
// Adquirir fecha para comprobar si esta caducado
Calendar c = Calendar.getInstance();
System.out.println("Current time => " + c.getTime());
SimpleDateFormat df = new SimpleDateFormat("MM-yyyy");
String Ahora = df.format(c.getTime());
String Caduca = cursor.getString(cursor.getColumnIndex("fecha"));
// Creo Variables Date para las fechas de tipo String
Date c1 = null;
Date c2 = null;
try {
c1 = df.parse(Ahora);
c2 = df.parse(Caduca);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Comparo las fechas despues de haberlas pasado a Date
if (c1.after(c2)) {
//SI esta CADUCADO
itemFecha.setText(cursor.getString(cursor.getColumnIndex("fecha")));
//Cambio colores de fondo y texto a ROJO
LayoutFecha.setBackgroundColor(Color.parseColor("#FF0000"));//Rojo
itemList.setBackgroundColor(Color.parseColor("#FF0000"));// rojo
itemFecha.setTextAppearance(context, R.style.boldText);
itemCaduca.setTextAppearance(context, R.style.boldText);
} else {
//NO esta Caducado
itemFecha.setText(cursor.getString(cursor.getColumnIndex("fecha")));
//Cambio colores de fondo y texto
LayoutFecha.setBackgroundColor(Color.parseColor("#FFF9F9"));
itemList.setBackgroundColor(Color.parseColor("#009EE0"));
itemFecha.setTextAppearance(context, R.style.normalText);
itemCaduca.setTextAppearance(context, R.style.normalText);
}
//Escribo dato dosis en el elemento de la lista
TextView itemDosis = (TextView) view.findViewById(R.id.itemDosis);
itemDosis.setText(cursor.getString(cursor.getColumnIndex("dosis")));
String uriFoto = cursor.getString(cursor.getColumnIndex("foto"));
foto = (ImageView) view.findViewById(R.id.itemImage);
if (uriFoto.equals("")) {
foto.setImageResource(R.drawable.no_photo3);
} else {
foto.setImageURI(Uri.parse(uriFoto));
}
}
}
esto se que es "complicado, intentare mejorar la leccion para hacer una lista desde una base de datos! Animo!! |
|
![thanks]([ICONS.THANKSINFOLIST_IMAGE]) 1 usuario agradecido admin por esta útil publicación.
|
|
|
Posición: Member
Grupos: Registered
Registrado: 08/10/2014(UTC) Mensajes: 14
Agradecimientos: 4 veces
|
Buenos días!
Creo que lo tengo. Al final entre tus ejemplos y una ayudita externa lo he conseguido!!
Realmente es complejo. Una vez lo tienes, es relativamente "fácil" de entender qué es lo que hace, pero conceptualmente es algo complejo, por lo menos para mi.
Llevo unos cuantos añitos programando con lenguajes "no orientados a objetos" (¿te suena Cobol? jejeje... pues es uno de los que me dan de comer...), y si bien hay muchas cosas que me resultan fáciles de pillar, hay otras muchas nuevas con las que alucino un poco.
Pero bueno, tenía muchas ganas de aprender a programar en Android y tu web me está yendo de perlas!! Ánimo y sigue así!! Que seguro que alguna duda más posteo... jejeje...
|
|
|
|
Posición: Administration
Grupos: Administrators
Registrado: 07/10/2010(UTC) Mensajes: 436 ![Hombre Hombre](/YAF/Themes/flatearth/male.gif) Ubicación: España Agradecimientos: 38 veces Fue agradecido: 49 vez/veces in 48 publicación(es).
|
ok gracias por compartir tus experiencias! nos leemos y animo! |
|
|
|
|
AprendeAndroid.com - FORO
»
AREA DE DESARROLLO
»
Android Foro
»
Listview personalizada cargando datos de BD (Solucionado)
Salto de foro
No puedes iniciar nuevos temas en este foro.
No puedes responder a temas en este foro.
No puedes eliminar sus temas en este foro.
No puedes editar sus temas en este foro.
No puedes crear encuestas en este foro.
No puedes votar las encuestas en este foro.