viernes, 31 de julio de 2015

Desarrollo de App Android(002) para dispositivos móviles

Practica 002 (agosto 2015)
Ing. Honoria Reyes Macedo

Tomando en cuenta que ya se termino la practica 001 Continuar con la siguiente practica.


Introducción: En esta práctica se crea la base de datos en SQLite. SQLite es un Sistema Gestor de Base de Datos Relacional(RDBMS) que esta integrada mediante librerías en Android Studio. Se basa en (SQL)

      - Para ver la base de Datos creada en el emulador, buscar en la opción "Android Device Monitor"



              Nota: Recordar que cada etiqueta dada de alta en el archivo strings.xml la usaremos en las interfaces(Activity). Observa que las etiquetas  empiezan con "c_lbl", los campos de texto con "c_txt" y los menus empiezan con "act_"

2.- Verifica y completa tu archivo activity_inserta_alumno.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   
android:paddingRight="@dimen/activity_horizontal_margin"
   
android:paddingTop="@dimen/activity_vertical_margin"
   
android:paddingBottom="@dimen/activity_vertical_margin"
   
tools:context="com.uvm.sistemas.appinsertar.InsertaAlumno">

    <
LinearLayout
       
android:orientation="vertical"
       
android:layout_width="match_parent"
       
android:layout_height="match_parent">
        <
TextView
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="@string/c_lblcve"
           
android:textColor="#ffc26e18"
           
android:textSize="25sp"
           
android:id="@+id/textVCve" />

        <
EditText
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:inputType="number"
           
android:hint="@string/c_txtcve"
           
android:textColor="#ffc26e18"
           
android:textSize="20sp"
           
android:id="@+id/editTCve" />
       
        <
TextView
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="@string/c_lblnombre"
           
android:textColor="#ffc26e18"
           
android:textSize="25sp"
           
android:id="@+id/textVnombre" />

        <
EditText
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:hint="@string/c_txtnombre"
           
android:textColor="#ffc26e18"
           
android:textSize="20sp"
           
android:id="@+id/editTnombre" />
        <
TextView
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="@string/c_lblappaterno"
           
android:textColor="#ffc26e18"
           
android:textSize="25sp"
           
android:id="@+id/textVappaterno" />

        <
EditText
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:hint="@string/c_txtappaterno"
           
android:textColor="#ffc26e18"
           
android:textSize="20sp"
           
android:id="@+id/editTappaterno" />
        <
TextView
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="@string/c_lblapmaterno"
           
android:textColor="#ffc26e18"
           
android:textSize="25sp"
           
android:id="@+id/textVapmaterno" />

        <
EditText
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:hint="@string/c_txtapmaterno"
           
android:textColor="#ffc26e18"
           
android:textSize="20sp"
           
android:id="@+id/editTapmaterno" />
        <
TextView
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="@string/c_lblpwd"
           
android:textColor="#ffc26e18"
           
android:textSize="25sp"
           
android:id="@+id/textVPwd" />

        <
EditText
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:hint="@string/c_txtpwd"
           
android:textColor="#ffc26e18"
           
android:textSize="20sp"
           
android:id="@+id/editTpwd" />
        <
TextView
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="@string/c_lblstatus"
           
android:textColor="#ffc26e18"
           
android:textSize="25sp"
           
android:id="@+id/textVStatus" />

        <
LinearLayout
           
android:orientation="horizontal"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content">

            <
CheckBox
                
android:layout_width="wrap_content"
               
android:layout_height="wrap_content"
               
android:text="@string/c_txtstatus"
               
android:id="@+id/checkBoxStatus" />

            <
Button
               
android:layout_width="wrap_content"
               
android:layout_height="wrap_content"
               
android:text="Guardar"
               
android:layout_marginLeft="40dp"
               
android:id="@+id/btnGuardar" />
        </
LinearLayout>

    </
LinearLayout>
</
RelativeLayout>

Qudaria asi:



3.- Crear una clase AlumnoEntity.class

            a)  Inicializar variables



b) Seleccionar el menu Refactor + Encapsulate Fields para generer sus get y set


c) Marcar todas las variables para que genere sus get y set



Quedara Asi:


Agregar los siguientes metodos:


d) Agregar dos metodos a la clase

private String campos;
private String tabla;


public String getTabla(){
   
this.tabla="alumno";
   
return tabla;
}

public String getCampos(){
   
this.campos= "cvealumnoID Integer primary key, " +
           
"nombre Text, " +
           
"appaterno Text, " +
           
"apmaterno Text, " +
           
"pasword Text, " +
           
"estatus Integer " ;
         
/**  "fechaactualiza datetime";*/
   
return campos;
}

4.- Crear la clase DBhelper.class

package com.uvm.sistemas.appinsertar;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DBhelper extends SQLiteOpenHelper  {

    AlumnoEntity
campohelp = new AlumnoEntity();

   
static final String DB_NAME = "demo";
   
static final int DB_VERSION = 1;


   
private  final String CREATE_TABLE = "create table if not exists "
           
+ campohelp.getTabla() + "(" + campohelp.getCampos() + " );";

   
public DBhelper(Context context) {
       
super(context, DB_NAME, null,DB_VERSION);
    }
   
@Override
   
public void onCreate(SQLiteDatabase db) {

        db.execSQL(
CREATE_TABLE);
    }
   
@Override
   
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL(
"DROP TABLE IF EXISTS " + campohelp.getTabla());
        onCreate(db);
    }
}


5.- Crear la clase AlumnoDAO.class

package com.uvm.sistemas.appinsertar;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.sql.SQLException;


public class AlumnoDAO {
   
private Context ourcontext;
   
private SQLiteDatabase database;
   
private DBhelper dbhelper;

   
public AlumnoDAO(Context c){
       
ourcontext= c;
    }

   
public AlumnoDAO abrirBD()throws SQLException{
       
dbhelper= new DBhelper(ourcontext);
       
database = dbhelper.getWritableDatabase();
       
return this;
    }

   
public void cerrarBD(){
       
dbhelper.close();
    }

   
public long insertar(AlumnoEntity alumn)throws SQLException{
        ContentValues registro =
new ContentValues();
       
long  result=1;
        registro.put(
"cvealumnoid", alumn.getCvealumnoID());
        registro.put(
"nombre", alumn.getNombre());
        registro.put(
"appaterno", alumn.getAppaterno());
        registro.put(
"apmaterno", alumn.getApmaterno());
        registro.put(
"pasword", alumn.getPasword());
        registro.put(
"estatus", alumn.getEstatus());
   
        result =
database.insert(alumn.getTabla(),null,registro);
        Log.d(
"result", String.valueOf(result));       
       
return result;
    }

   
   
public long buscarMax(){
       
return 1;
    }
}

6.-   Agrega el código al archivo  InsertaAlumno.class de la práctica anterior

package com.uvm.sistemas.appinsertar;

import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class InsertaAlumno extends ActionBarActivity implements View.OnClickListener {
   
private EditText etcve, etnombre, etappat, etapmat, etpasw;
   
private CheckBox etest;
    Button
agregar;
    AlumnoDAO
alumnBD;
    AlumnoEntity
alumnDatos;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_inserta_alumno);
       
agregar=(Button) findViewById(R.id.btnGuardar);
       
alumnBD = new AlumnoDAO(this);
       
alumnDatos = new AlumnoEntity();

       
agregar.setOnClickListener(this);
       
etcve =(EditText) findViewById(R.id.editTCve);
       
etnombre =(EditText) findViewById(R.id.editTnombre);
       
etappat =(EditText) findViewById(R.id.editTappaterno);
       
etapmat =(EditText) findViewById(R.id.editTapmaterno);
       
etpasw =(EditText) findViewById(R.id.editTpwd);
       
etest =(CheckBox) findViewById(R.id.checkBoxStatus);
    }



   
@Override
   
public void onClick(View v) {
       
switch(v.getId()){
           
case R.id.btnGuardar:
               
try {
                    preparaDatos();
                   
alumnBD.abrirBD();                
                   
alumnBD.insertar(alumnDatos);
                    Toast.makeText(
this, "Registro Insertado con Exito", Toast.LENGTH_LONG).show();

                   
alumnBD.cerrarBD();
                   
                }
catch (Exception e ){
                    Toast.makeText(
this, "Error de Insercion: " + e, Toast.LENGTH_LONG).show();
                }
        }
    }

   
public  void preparaDatos(){
       
int bandera=0;
       
alumnDatos.setCvealumnoID(Integer.valueOf(etcve.getText().toString()));
       
alumnDatos.setNombre(etnombre.getText().toString());
       
alumnDatos.setAppaterno(etappat.getText().toString());
       
alumnDatos.setApmaterno(etapmat.getText().toString());
       
alumnDatos.setPasword(etpasw.getText().toString());
       
if (etest.isChecked()) {bandera=1;}
       
alumnDatos.setEstatus(bandera);

    }
}

7.- Probrarlo hasta que no tenga Errores


        Nota:  Utilizar los siguientes mensajes en caso de que se quiera ir rastreando los lugares donde pasa la ejecucion del programa:
        a) Para clases que estan ligadas a un .XML
                Toast.makeText(this,"Si pasa por Aqui",Toast.LENGTH_LONG).show();


        b) Para las clases que no estan ligadas a un .XML
                   Log.d("MyApp", "Estoy Aqui");



3.-  En la clase que se genero    ConsultaAlumno.class poner el siguiente código:

package com.uvm.sistemas.appinsertar;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;


public class ConsultaAlumno extends ActionBarActivity {
    AlumnoDAO
alumnBD;
    AlumnoEntity
alumnDatos;
   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_consulta_alumno);
        cargarAlumnos();
    }


   
public void cargarAlumnos() {
       
alumnBD = new AlumnoDAO(this);
       
alumnDatos = new AlumnoEntity();
       
/**alumnBD.abrirBD();*/
        
try {

            String[] AllDatos =
alumnBD.consultar(alumnDatos);
            ArrayAdapter<String> adapter=
new ArrayAdapter(this,android.R.layout.simple_list_item_1, AllDatos);
            ListView Lista = (ListView) findViewById(R.id.
listVAlumn);
            Lista.setAdapter(adapter);
            Toast.makeText(
this, "LLeno el arreglo", Toast.LENGTH_LONG).show();
        }
catch (Exception e){
            Toast.makeText(
this, "Error de Consulta: " + e, Toast.LENGTH_LONG).show();
        }
    }

}