Está en la página 1de 20

Guía para proyectos CRUD en Android Studio y

Firebase
Édison Valencia Díaz

Se inicia el programa Android Studio

En la opción Start a new Android Studio proyect (Iniciar un nuevo proyecto Android Studio),
se selecciona para crear un nuevo proyecto. Si tiene el proyecto ya creado y se está en lista
izquierda, son dar click en el nombre del proyecto, este se abrirá. O por la opción Open an
existing Android Studio project (Abrir un proyecto Android Studio existente)
Para proyecto nuevos, la ventana iniciar de configurar se componen de:
● Application name (nombre de aplicación), así se identifica el proyecto
● Company domain (dominio de la compañía) es informativo y con esta información se
compone el nombre el paquete donde se almacena la aplicación.
● Proyect location (localización del proyecto), ruta en el disco duro donde se almacena
el proyecto
● Package name (nombre del paquete), es un subcarpeta que se crea para organizar
los códigos fuente.
● Include C++ support y Include Kotlin support (Incluir soporte para C++ y Incluir
soporte para Kotlin)
Ahora, se configura el dispositivo base para el desarrollo, considerado factores mínimos
para el SDK (Standard Developer Kit)
● Phone and Tablet (Teléfono y Tableta), se selecciona la versión base, la cual está
relacionado con la versión del sistema operativo del dispositivo
● Wear (Reloj)
● TV (Televisor)
● Android Auto (Radio del auto)
● Android Things (Electrónica para el Internet de las Cosas)
Según el dispositivo seleccionado, se proponen diferentes ventanas asistentes. La
recomendación es iniciar por Empty Activity (actividad vacía)
Las actividades es la unión entre el código de la aplicación (código en kotlin o java) y la
interfaz de usuario (código en XML).

Recomendable: nombrar la actividad de tal forma que sea fácil de relacionar con las
acciones que realiza.

● Activity Name (nombre de la actividad). Recomendado terminar el nombre con el


texto “Activity”
○ Generate Layout File (generar el archivo de la ventana - diseño )
● Layout Name (nombre de la ventana - diseño ). El nombre que se genera de forma
automática, es recomendable. “activity_ “
○ Backwards Compatibility (AppCompat) (compatibilidad con versiones anterior
de Android)
En el editor de código se tiene dos secciones:
● árbol de archivos del proyecto. Marcados en cuadro amarillo el código fuente en
lenguaje Kotlin y el diseño de la ventana en lenguaje XML.
● Área de editor de código

Si tomamos el archivo de layout. En este ejemplo “activity_principal.xml


Al editar el código XML, la interfaz gráfica también se modifica. Escribiremos parte del
código en XML para el ejemplo.

<?​xml version=​"1.0" ​encoding=​"utf-8"​?>


<android.support.constraint.ConstraintLayout
xmlns:​android​=​"http://schemas.android.com/apk/res/android"
​xmlns:​app​=​"http://schemas.android.com/apk/res-auto"
​xmlns:​tools​=​"http://schemas.android.com/tools"
​android​:layout_width=​"match_parent"
​android​:layout_height=​"match_parent"
​tools​:context=​".PrincipalActivity"​>

<TextView
​android​:id=​"@+id/tv_titulo_principal"
​android​:layout_width=​"0dp"
​android​:layout_height=​"wrap_content"
​android​:text=​"@string/texto_titulo_principal"
​android​:textAlignment=​"center"
​android​:textSize=​"30sp"
​android​:textStyle=​"bold"
​app​:layout_constraintBottom_toBottomOf=​"parent"
​app​:layout_constraintHorizontal_bias=​"0.191"
​app​:layout_constraintLeft_toLeftOf=​"parent"
​app​:layout_constraintRight_toRightOf=​"parent"
​app​:layout_constraintTop_toTopOf=​"parent"
​app​:layout_constraintVertical_bias=​"0.056" ​/>
<TextView
​android​:id=​"@+id/tv_subtitulo_principal"
​android​:layout_width=​"0dp"
​android​:layout_height=​"wrap_content"
​android​:layout_marginEnd=​"8dp"
​android​:layout_marginStart=​"8dp"
​android​:layout_marginTop=​"8dp"
​android​:text=​"@string/texto_subtitulo_principal"
​app​:layout_constraintEnd_toEndOf=​"parent"
​app​:layout_constraintStart_toStartOf=​"parent"
​app​:layout_constraintTop_toBottomOf=​"@+id/tv_titulo_principal" ​/>

<EditText
​android​:id=​"@+id/et_texto"
​android​:layout_width=​"0dp"
​android​:layout_height=​"wrap_content"
​android​:layout_marginEnd=​"8dp"
​android​:layout_marginStart=​"8dp"
​android​:layout_marginTop=​"38dp"
​android​:ems=​"10"
​android​:hint=​"@string/titulo_campo_texto"
​android​:inputType=​"textPersonName"
​app​:layout_constraintEnd_toEndOf=​"parent"
​app​:layout_constraintStart_toStartOf=​"parent"
​app​:layout_constraintTop_toBottomOf=​"@+id/tv_subtitulo_principal" ​/>

<EditText
​android​:id=​"@+id/et_numero"
​android​:layout_width=​"0dp"
​android​:layout_height=​"wrap_content"
​android​:layout_marginEnd=​"8dp"
​android​:layout_marginStart=​"8dp"
​android​:layout_marginTop=​"8dp"
​android​:ems=​"10"
​android​:hint=​"@string/titulo_campo_numero"
​android​:inputType=​"number"
​app​:layout_constraintEnd_toEndOf=​"parent"
​app​:layout_constraintStart_toStartOf=​"parent"
​app​:layout_constraintTop_toBottomOf=​"@+id/et_texto" ​/>

<Button
​android​:id=​"@+id/btn_enviar"
​android​:layout_width=​"0dp"
​android​:layout_height=​"wrap_content"
​android​:layout_marginEnd=​"8dp"
​android​:layout_marginStart=​"8dp"
​android​:layout_marginTop=​"38dp"
​android​:text=​"@string/titulo_boton_enviar"
​app​:layout_constraintEnd_toEndOf=​"parent"
​app​:layout_constraintStart_toStartOf=​"parent"
​app​:layout_constraintTop_toBottomOf=​"@+id/et_numero" ​/>

</android.support.constraint.ConstraintLayout>

Archivo: string.xml
<resources>
<string ​name=​"app_name"​>​BaseCRUD​</string>
<string ​name=​"texto_titulo_principal"​>​Base CRUD​</string>
<string ​name=​"texto_subtitulo_principal"​>​Ejemplo de uso de Kotlin y Firebase​</string>
<string ​name=​"titulo_campo_texto"​>​Campo texto​</string>
<string ​name=​"titulo_campo_numero"​>​Campo número​</string>
<string ​name=​"titulo_boton_enviar"​>​Enviar datos​</string>
</resources>
apply ​plugin​: ​'com.android.application'

apply ​plugin​: ​'kotlin-android'

apply ​plugin​: ​'kotlin-android-extensions'


apply ​plugin​: ​'com.google.gms.google-services'

android {
compileSdkVersion ​28
​defaultConfig {
​applicationId ​"com.edi.basecrud"
​minSdkVersion ​23
​targetSdkVersion ​28
​versionCode ​1
​versionName ​"1.0"
​testInstrumentationRunner ​"android.support.test.runner.AndroidJUnitRunner"
​}
buildTypes {
release {
​minifyEnabled ​false
​proguardFiles getDefaultProguardFile(​'proguard-android.txt'​), ​'proguard-rules.pro'
​}
}
}

dependencies {
implementation fileTree(​dir​: '​ libs'​, ​include​: [​'*.jar'​])
implementation ​"org.jetbrains.kotlin:kotlin-stdlib-jdk7:​$kotlin_version​"
​implementation ​'com.android.support:appcompat-v7:28.0.0'
​implementation ​'com.android.support.constraint:constraint-layout:1.1.3'
​testImplementation ​'junit:junit:4.12'
​androidTestImplementation ​'com.android.support.test:runner:1.0.2'
​androidTestImplementation ​'com.android.support.test.espresso:espresso-core:3.0.2'
​implementation ​'com.google.firebase:firebase-database:16.0.5'
}

Noviembre 2018: ​implementation ​'com.google.firebase:firebase-database:16.0.5'


Archivo: Registro.kt
package ​com.edi.basecrud

data class ​Registro (


​val ​texto​:String=​""​,
val ​numero​:Int
)

package ​com.edi.basecrud

import ​android.support.v7.app.AppCompatActivity
import ​android.os.Bundle
import ​android.widget.Toast
import ​com.google.firebase.database.DatabaseReference
import ​com.google.firebase.database.FirebaseDatabase
import ​kotlinx.android.synthetic.main.activity_principal.*

class ​PrincipalActivity : AppCompatActivity() {

​var ​basedatos​:DatabaseReference?=​null

override fun ​onCreate​(savedInstanceState: Bundle?) {


​super​.onCreate(savedInstanceState)
setContentView(R.layout.​activity_principal)​

​//relaciona el boton con la acción


​btn_enviar.setOnClickListener ​{​atenderBoton()​}
​}

​private fun ​atenderBoton​() {


​val ​texto = et_texto.​text​.toString()
​val ​numero = et_numero.​text.​ toString().​toInt(​ )

​val ​registro = Registro(texto​, ​numero)

​//Conexión e ingreso a la base de datos


​val ​database = FirebaseDatabase.getInstance()
​basedatos​= FirebaseDatabase.getInstance().getReference(​"Registros"​) ​//tabla
​basedatos​!!.child(​"tabla_registro"​).push().setValue(registro) ​//registro

//envío de mesaje de confirmación


​Toast.makeText(​this, ​"Envio de datos
correctamente!!!"​,​Toast.​LENGTH_LONG)​ .show()

​//borrar los campos en la actividad


​et_texto.​text ​= ​null
​et_numero.​text ​= ​null
​}
}

También podría gustarte