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 omarng@sandunga.unistmo.edu.mx 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