PRACTICA 10: Android: Consultar Productos
Ing. Honoria Reyes Macedo
IDE: Android Studio
Lenguaje
de programación para móviles: Java
Sistema
Operativo de desarrollo: Windows
Sistema
Operativo de Ejecución: Android
Base
de datos: SQLite
INTRODUCCION
La
información se presenta organizada en un componente GridView que se llena
mediante un adaptador.
El adaptador pone la información
de cada producto dentro de un layout ítem. Y al final los envía al GridView
ACTIVIDADES
1.- En la carpeta drawable guardar un icono del producto con nombre no.png
2.- En el archivo strings.xml
- Cambiar la leyenda de la etiqueta “menu_gallery”, poner la leyenda Libros
en Existencia (De acuerdo al tema que se escogió).
3.- En el archivo fragment_gallery.xml
agregar un componente GridView
- Modificarle 5 atributos:
gravity = center
horizontalSpacing = 10dp
id =
gridVProductos
numColumns = 2
verticalSpacing = 10dp
- Quedaría así, posteriormente quitaremos lo que corresponde al TextView
4.- Crear un nuevo Layout para organizar el contenido de la
consulta
- Generar un Layout(xml) que se llame producto_items
- Agregar los siguientes componentes:
1 ImageView con id= imgViewProd y background= @drawable/no
1 TextView con id=textVProd
1 TextView con id=textVPrecio
El LinearLayout deberá ser orientation = vertical
- Sus atributos quedarían así:
- En modo Codigo
quedaria así:
5.- Editar la clase ProductoADO
Agregar el método llenaProd() y declarar la variable ObjProd;
- Sus librerías quedarían así:import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
6.- Crear una clase adapter
6.1- Crear la clase ProductoAdapter para adaptar los valores de
producto en un GridView
6.2 Implementar sus métodos
Quedaría así:
6.3- Modificar el contenido de sus métodos, agregar su constructor y agregar la clase ViewHolder (texto rojo)
package com.example.control_hrm;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
public class ProductoAdapter extends BaseAdapter {
private Context context;
private int layout;
private ArrayList<Producto>
arrayProducto;
public ProductoAdapter(Context context, int layout,
ArrayList<Producto> productos) {
this.context=
context;
this.layout =
layout;
this.arrayProducto =
productos;
}
@Override
public int getCount() {
return arrayProducto.size();
}
@Override
public Object getItem(int i)
{
return arrayProducto.get(i);
}
@Override
public long getItemId(int i)
{
return i;
}
@Override
public View getView(int i,
View view, ViewGroup viewGroup) {
View row = view;
ViewHolder holder = new ViewHolder();
String archivo;
if(row == null){
LayoutInflater inflater =
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(layout,
null);
holder.loc_textVProd =
(TextView) row.findViewById(R.id.textVProd);
holder.loc_textVPrecio =
(TextView) row.findViewById(R.id.textVPrecio);
holder.loc_imgViewProd =
(ImageView) row.findViewById(R.id.imgViewProd);
row.setTag(holder);
}
else {
holder = (ViewHolder)
row.getTag();
}
Producto prod = arrayProducto.get(i);
holder.loc_textVProd.setText(prod.getNombreprod());
holder.loc_textVPrecio.setText(String.valueOf(prod.getPrecioprod()));
archivo = prod.getFotoprod();
if (archivo==null){archivo="no";}else{
String[] palabra = archivo.split("\\.");
archivo = palabra[0];
}
String getPkg=context.getPackageName();
int aux=context.getResources().getIdentifier(archivo,
"drawable",getPkg);
holder.loc_imgViewProd.setImageResource(aux);
return row;
}
private class ViewHolder{
ImageView loc_imgViewProd;
TextView loc_textVProd, loc_textVPrecio;
}
}
7.- Modificar el archivo GalleryFragment
Al Reconstruir y
Ejecutar quedaria así:
************************************************************************
ANEXO I: Insertar datos directamente en la Base de Datos
Agregar el procedimiento insertarValorProd() a la clase ProductoADO
(líneas en azul). Modificar el nombre de las imágenes por las que se tienen en drawable
Nota: Se tienen que tener al menos 3 imágenes de productos guardadas en la carpeta drawable
Agregar la llamada del procedimiento creado dentro del
procedimiento llenaProd (línea en azul)
Nota: Solo ejecutarlo una vez, y borrar esta línea para que no
provoque error por claves duplicadas
********************************************************************
ANEXO II
DBhelper.java
package com.example.control_hrm;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class DBhelper extends SQLiteOpenHelper {
Producto campohelp = new Producto();
static final String DB_NAME = "Libros.db";
static final int DB_VERSION = 1;
private final String CREATE_TABLE = "create table if not exists "
+ campohelp.getTabla() + "(" + campohelp.getCampos() + " );";
public DBhelper(@Nullable Context context) {
super(context, DB_NAME, null,DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + campohelp.getTabla());
onCreate(sqLiteDatabase);
}
}
*****************************************************
Producto.java
package com.example.control_hrm;
import java.util.Date;
public class Producto {
private int cveprod;
private String nombreprod;
private String autorprod;
private double precioprod;
private String fotoprod;
private Date fechacaptura;
private boolean activo;
private String campos;
private String tabla;
public Producto() { }
public Producto(int cveprod, String nombreprod, String autorprod, double precioprod, String fotoprod, Date fechacaptura, boolean activo) {
this.cveprod = cveprod;
this.nombreprod = nombreprod;
this.autorprod = autorprod;
this.precioprod = precioprod;
this.fotoprod = fotoprod;
this.fechacaptura = fechacaptura;
this.activo = activo;
}
public String getTabla(){
this.tabla="producto";
return tabla;
}
public String getCampos(){
this.campos= "cveprod Integer primary key, " +
"nombreprod Text, " +
"autorprod Text, " +
"precioprod Text, " +
"fotoprod Text, " +
"fechacaptura Text, " +
"activo Integer ";
return campos;
}
public int getCveprod() {
return cveprod;
}
public void setCveprod(int cveprod) {
this.cveprod = cveprod;
}
public String getNombreprod() {
return nombreprod;
}
public void setNombreprod(String nombreprod) {
this.nombreprod = nombreprod;
}
public String getAutorprod() {
return autorprod;
}
public void setAutorprod(String autorprod) {
this.autorprod = autorprod;
}
public double getPrecioprod() {
return precioprod;
}
public void setPrecioprod(double precioprod) {
this.precioprod = precioprod;
}
public String getFotoprod() {
return fotoprod;
}
public void setFotoprod(String fotoprod) {
this.fotoprod = fotoprod;
}
public Date getFechacaptura() {
return fechacaptura ;
}
public void setFechacaptura(Date fechacaptura) {
this.fechacaptura = fechacaptura;
}
public boolean isActivo() {
return activo;
}
public void setActivo(boolean activo) {
this.activo = activo;
}
}
*****************************************************
ProductoADO.java
****************************************************************
ANEXO III AGREGAR UN COMPONENTE MAS A LA CONSULTA
1.- Agregar un TextView con id= textVAutor (lineas en azul)
2.- Agregar el atributo loc_textVAutor en la clase ViewHolder (línea azul)
3.- Agregar el llenado del atributo loc_textVAutor en el método getView (líneas azules)
--------------------------------------------0---0---------------------------
-----------------------------------------000------000---------------------







































