Download Tendencias Actuales de BD

Document related concepts
no text concepts found
Transcript
Tendencias Actuales
de BD
Clase 5: Proyecto Ejemplo
Instructor: MC Omar Nieva García
[email protected]
1
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Objetivo
Crear una aplicación en Android que permita comprender y
conocer el uso de datos persistentes empleandp SQLite
2
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Temas

Creación de un proyecto

Conocer y modificar el Activity principal

Agregar funcionalidad con Java

Modelo de trabajo con SQLite
3
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Creación de un Proyecto
Paso 1

Crear un nuevo proyecto en Android Studio

Nombre de la app, dominio y ubicación

Valores de la API

Seleccionar tipo de Activity

Configurar la Activity
4
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Creación de un Proyecto
Paso 2

Echar un vistaso a la estructura de la app
desde la vista de Android

Manifest

Java

Res
5
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Activity Principal
Paso 3

Apertura y visualización del archivo layout de
la activity principal

A partir de las versiones recientes, hay 2
archivos xml (content)

Verificar y alternar entre el modo de diseño y
el modo texto

Importante ubicar en el modo de diseño

Paleta de objetos

Árbol de componentes

Ventana de propiedades
6
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Activity Principal
Paso 4

Trabajamos en layout (content)

Seleccionar el objeto Textview (árbol de componentes) y
suprimimos.

Seleccionar ListView (paleta) y redimensionarlo para
ocupar el área del contenedor (observar el árbol de
componentes)

Asignar el id avisos_list_view (se indica el objeto como
una pista)

Asignar a layout:width el valor “match_parent”
7
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Activity Principal
Paso 5

Trabajar en el modo Texto en content_avisos.xml

Cambiar el color del fondo de Layout (objeto
RelativeLayout)
android:background = "#58A7B0"

Asignar el color a un archivo de recursos
android:background = "@color/azul_claro" (Alt + Enter)

Revisar el archivo en Res/color.xml
8
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Activity Principal
Paso 5B
 Crear
un nuevo archivo layout para el diseño de la
fila

Botón derecho sobre Res/Layout > New Layout Resource
File

Nombrarlo avisos_row e indicar LinearLayout como
elemento root

Se muestra un area blanca (es decir estamos trabajando en
el elemento raíz)

Cambiamos la orientación a vertical (herramienta panel de
control)

Ahora en propiedades ajustamos layout:height: 50 dp

Buscar en la paleta el objeto LinearLayout horizontal,
arrastrar y soltar en el area en blanco (linearlayout
vertical). Observa lo que ocurre en la ventana Component
Tree

Cambiamos a modo texto y modificamos la altura del
LinearLayout horizontal
android:layout_height="48dp">
9
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Activity Principal
Paso 5C

Agregar otro objeto dentro del Layout horizontal

Usar una custom view, para ello usar el siguiente código
dentro de LinearLayout horizontal
<view
android:layout_width="10dp"
android:layout_height="match_parent"
class="android.view.View"
android:id="@+id/row_tab" />


Verificar que el objeto row_tab forma parte del
LineaLayout horizontal en el arbol de componente
Agregar el nuevo objeto dentro de LinearLayout
horizontal


Seleccionar en el arbol de componentes el LinearLayout
horizontal
Agregar desde la paleta el objeto Widget>LargeText
10
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Activity Principal
Paso 5D


Agregar el nuevo objeto continuación ..

Configurar las propiedades layout:width y layout:height a
match_parent

Configurar la propiedad id: row_text y textSize: 18sp y
text: Mi aviso de texto
Configuramos colores

Seleccionar en arbol de componentes el LinearLayout
vertical (raiz del layout)

Configurar su atributo background a azul_claro

Seleccionamos row_tab y cambiamos su propiedad
background a @color/rosa

Seleccionar row_text y la propiedad background a
@color/azul_oscuro
11
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Activity Principal
Paso 6

Conectar el archivo Fila (avisos_row), creado
anteriormente con CONTENT

Escribir en content_avisos.xml la siguiente linea casi, al
final, dentro de ListView
tools:listitem="@layout/avisos_row"/>
12
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Activity Principal
Paso 7

Últimos detalles para mejorar la apariencia

En avisos_row.xml en modo texto modificar
android:layout_height=“50dp”
android:background=“@color/azul_claro”

Ahí mismo agregar
android:textColor=“@color/azul_oscuro”
android:gravity=“center_vertical”
android:ellipsize=“end”
android:maxLines=“1”
13
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Funcionalidad – Java
Paso 8

Ubicar el archivo MainActivity.java y ubicar el
método onCreate

Definir el atributo privado de tipo ListView, llamado
mListView;

Sustituimos el código original de onCreate con lo siguiente
public class AvisosActivity extends AppCompatActivity {
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_avisos);
mListView = (ListView) findViewById(R.id.avisos_list_view);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
R.layout.avisos_row,
R.id.row_text,
new String[]{"primer registro", "segundo registro", "tercer registro"});
mListView.setAdapter(arrayAdapter);
}
14
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Funcionalidad – Java
Paso 9

Siguiendo en MainActivity.java


Resolver las clases no reconocidas (Alt + enter)
Ejecutar la app, deberás de ver algo como:
Si no observar el título de la aplicación, va al archivo
Manifest y cambia la propiedad:
android:theme=“@style/AppTheme.NoActionBar”
Por esta otra
android:theme=“@style/AppTheme”
¡Aprovecha para ver el menú existente!
15
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Funcionalidad – Java
Paso 10

Ubicar y modificar el menú por defecto

Ubicar el método OnCreateOptionsMenu (Menu menú) y
tomar nota del nombre del menú que ahí aparece

Ir al archivo XML en res>menu>

Observar el ítem “Settings” que es la opción que viene por
defecto en el menú. Elimina todo el ítem y coloca el
siguiente código que corresponde a dos ítems nuevos
<item android:id="@+id/action_nuevo"
android:title="@string/nuevo_aviso"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="@+id/action_salir"
android:title="@string/salir"
android:orderInCategory="200"
app:showAsAction="never" />
16
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Funcionalidad – Java
Paso 11

Se da funcionalidad a las opciones del menú, a través de
MainActivity.java

Ubicar el método onOptionItemSelected(MenuItem Item)

Sustituimos el código necesario, para que quede de la
siguiente manera:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_nuevo:
//crear nuevo aviso
Log.d(getLocalClassName(), "crear nuevo Aviso");
return true;
case R.id.action_salir:
finish();
return true;
default:
return false;
}
}
17
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Trabajo con SQLite
Paso 12

Necesitamos un mecanismo para almacenar los
avisos de forma permanente

El SDK de Adroid incorpora la clase
android.database.sqlite

Crear una nueva clase Java

App > Java > nombre del paquete principal > botón
derecho> New > Java Class

Nombrar a la clase Aviso

Esta clase es una abstracción de la información que se
almacenará en la B.D.
18
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Trabajo con SQLite
Paso 13

Código de Aviso.java
public class Aviso {
private int mId;
private String mContent;
private int mImportant;
public Aviso(int id, String content, int important) {
mId = id;
mImportant = important;
mContent = content;
}
public int getId() {
return mId;
}
public void setId(int id) {
mId = id;
}
public int getImportant() {
return mImportant;
}
public void setImportant(int important) {
mImportant = important;
}
public String getContent() {
return mContent;
}
public void setContent(String content) {
mContent = content;
}
}
19
Tendencias actuales de base de datos
Instructor: MC Omar Nieva García
Trabajo con SQLite
Paso 14

Ahora crearemos un “proxy” que será un
intermediario entre nuestra app y la BD

Creamos una nueva clase AvisosDBAdapter
public class AvisosDBAdapter {
public static final String COL_ID = "_id";
//estos son los nombres de las columnas
public static final String COL_CONTENT = "content";
public static final String COL_IMPORTANT = "important";
public static final int INDEX_ID = 0; //estos son los índices correspoindientes
public static final int INDEX_CONTENT = INDEX_ID + 1;
public static final int INDEX_IMPORTANT = INDEX_ID + 2;
private static final String TAG = "AvisosDbAdapter"; //usado for logging
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
private static final String DATABASE_NAME = "dba_remdrs";
private static final String TABLE_NAME = "tbl_remdrs";
private static final int DATABASE_VERSION = 1;
private final Context mCtx;
private static final String DATABASE_CREATE =
"CREATE TABLE if not exists " + TABLE_NAME + " ( " +
COL_ID + " INTEGER PRIMARY KEY autoincrement, " +
COL_CONTENT + " TEXT, " +
COL_IMPORTANT + " INTEGER );";
}
20