logo
Bienvenido visitante. Para activar todas las funcionalidades, por favor Iniciar sesión o Registrarse.

Aviso

Icon
Error

Opciones
Ir a la última publicación
javisolo  
#1 Publicado : miércoles, 8 de octubre de 2014 12:51:35(UTC)
javisolo

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

admin  
#2 Publicado : miércoles, 8 de octubre de 2014 21:19:25(UTC)
admin

Posición: Administration

Grupos: Administrators
Registrado: 07/10/2010(UTC)
Mensajes: 436
Hombre
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!!
Un saludo,

Curso Completo GRATIS paso a paso de como programar Android
http://www.aprendeandroid.com
thanks 1 usuario agradecido admin por esta útil publicación.
javisolo en 09/10/2014(UTC)
javisolo  
#3 Publicado : jueves, 9 de octubre de 2014 7:37:48(UTC)
javisolo

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...
admin  
#4 Publicado : sábado, 18 de octubre de 2014 22:47:11(UTC)
admin

Posición: Administration

Grupos: Administrators
Registrado: 07/10/2010(UTC)
Mensajes: 436
Hombre
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!
Un saludo,

Curso Completo GRATIS paso a paso de como programar Android
http://www.aprendeandroid.com
Usuarios navegando este tema
Guest (3)
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.