Tuesday, October 27, 2020

CONSULTA BD, ANDROID STUDIO

 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

 En esta práctica se hace una consulta en la base de datos SQLite.

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---------------------






No comments:

Post a Comment

FLEXSLIDER HTML5

  PRACTICA 020: HTML: FLEXSLIDER Ing. Honoria Reyes Macedo  IDE: Dreamweaver, Atom o Block de notas Lenguaje de paginas ESTATICAS: HTML...