Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE INGENIERIA
SEMESTRE: SEPTIMO
LA PAZ-BOLIVIA
2021
2023
INDICE
1. INTRODUCCIÓN.......................................................................................................2
2. APLICACIÓN EN FUNCIONAMIENTO....................................................................25
3. FIREBASE................................................................................................................27
1. INTRODUCCIÓN.
Activity_main.xml:
que seria los nombres, apellidos, correo electrónico, celular, lista de usuarios y el
Código:
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txtEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/txt_email"
android:inputType="textEmailAddress" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txtPhone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/txt_phone"
android:inputType="phone"
app:textInputLayoutFocusedRectEnabled="false" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/txtTitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:text="@string/txt_titulo"
android:textSize="28sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvDatosUsuarios"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/view_list_item" />
</LinearLayout>
7
View_list_item.xml:
Acá empezamos con el diseño de cómo quedaría el apartado del usuario con el
Código:
Main_menu.xml:
Código:
Strings.xml:
Código:
<resources>
<string name="app_name">H4_firebase_db</string>
<string name="txt_name">Nombre</string>
<string name="txt_surname">Apellidos</string>
<string name="txt_email">Correo Electronico</string>
<string name="txt_phone">Telefono</string>
<string name="txt_titulo">Lista de Usuarios</string>
<string name="mnu_add">Añadir</string>
<string name="mnu_edit">Editar</string>
<string name="mnu_del">Eliminar</string>
</resources>
13
MainActivity.kt:
14
15
16
Código:
package com.example.h4_firebase_db
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.EditText
import android.widget.LinearLayout
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.firebase.FirebaseApp
import com.google.firebase.database.*
import java.util.UUID
//Firebase
var firebaseDatabase: FirebaseDatabase? = null
var databaseReference: DatabaseReference? = null
var usuarios: MutableList<Usuario> = ArrayList<Usuario>()
var UserSelected: String? = null
usuarioNombres = findViewById(R.id.txtNombres)
usuarioApellidos = findViewById(R.id.txtApellidos)
usuarioEmail = findViewById(R.id.txtEmail)
usuarioPhone = findViewById(R.id.txtPhone)
rvUsuarios = findViewById(R.id.rvDatosUsuarios)
rvUsuarios.layoutManager = LinearLayoutManager(this)
initFirebase()
listaUsuariosData()
}
}
})
}
//Implementacion
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val nombres = usuarioNombres!!.text.toString()
val apellidos = usuarioApellidos!!.text.toString()
val email = usuarioEmail!!.text.toString()
val phone = usuarioPhone!!.text.toString()
when (item.itemId){
R.id.icon_add -> {
if (nombres.isNullOrEmpty()||apellidos.isNullOrEmpty()||
email.isNullOrEmpty()|| phone.isNullOrEmpty()){
validateData()
}else{
val usuario = Usuario()
usuario.setUid(UUID.randomUUID().toString())
usuario.setFirstName(nombres)
usuario.setSurName(apellidos)
usuario.setEmail(email)
usuario.setPhone(phone)
databaseReference!!.child("Usuario").child(usuario.getUid()!!).setValue(usu
ario)
Toast.makeText(this, "Usuario Añadido",
Toast.LENGTH_SHORT).show()
cleanData()
}
}
R.id.icon_edit -> {
val usuarioEdited = Usuario()
18
usuarioEdited.setUid(UserSelected!!)
usuarioEdited.setFirstName(usuarioNombres!!.text.toString())
usuarioEdited.setSurName(usuarioApellidos!!.text.toString())
usuarioEdited.setEmail(usuarioEmail!!.text.toString())
usuarioEdited.setPhone(usuarioPhone!!.text.toString())
//grabar a firebase
databaseReference!!.child("Usuario").child(usuarioEdited.getUid()!!).setVal
ue(usuarioEdited)
Toast.makeText(this, "Editar", Toast.LENGTH_SHORT).show()
}
R.id.icon_delete -> {
val usuarioBorrado = Usuario()
usuarioBorrado.setUid(UserSelected!!)
databaseReference!!.child("Usuario").child(usuarioBorrado.getUid()!!).remov
eValue()
Toast.makeText(this, "Borrar", Toast.LENGTH_SHORT).show()
}
}
return true
}
//borrar datos
private fun cleanData(){
usuarioNombres!!.setText("")
usuarioApellidos!!.setText("")
usuarioEmail!!.setText("")
usuarioPhone!!.setText("")
usuarioNombres!!.requestFocus()
//Validar datos
if(nombres.isNullOrEmpty()){
usuarioNombres!!.error = "Obligatorio"
}else if(nombres.isNullOrEmpty()){
usuarioApellidos!!.error = "Obligatorio"
} else if(nombres.isNullOrEmpty()){
usuarioEmail!!.error = "Obligatorio"
} else if(nombres.isNullOrEmpty()){
usuarioPhone!!.error = "Obligatorio"
}
}
override fun OnItemClick(usuario: Usuario) {
UserSelected = usuario.getUid()
usuarioNombres!!.setText(usuario.getFirstName())
usuarioApellidos!!.setText(usuario.getSurName())
19
usuarioEmail!!.setText(usuario.getEmail())
usuarioPhone!!.setText(usuario.getPhone())
}
UserAdapter.kt:
20
Código:
package com.example.h4_firebase_db
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
return UserHolder(view)
}
}
}
}
21
Usuario.kt:
22
Código:
package com.example.h4_firebase_db
class Usuario {
private var vid: String? = null
private var nombres: String? = null
private var apellidos: String? = null
private var email: String? = null
23
//constructor
fun Usuario() {}
//1
fun getFirstName(): String? {
return nombres
}
//2
fun getSurName(): String? {
return apellidos
}
//3
fun getEmail(): String? {
return email
}
//4
fun getPhone(): String? {
return phone
}
}
24
Conexión a Firebase.json:
25
Código:
{
"project_info": {
"project_number": "934730940194",
"firebase_url": "https://h4ddbbkotlinjcrc-default-rtdb.firebaseio.com",
"project_id": "h4ddbbkotlinjcrc",
"storage_bucket": "h4ddbbkotlinjcrc.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id":
"1:934730940194:android:d43b1776bb3713d24b2f7b",
"android_client_info": {
"package_name": "com.example.h4_firebase_db"
}
},
"oauth_client": [
{
"client_id": "934730940194-
p329f44iut9mk25bc91vappta34i9a4s.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyDBJL74RmxC52KRYvEEgVqwFQXMPkvylDU"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "934730940194-
p329f44iut9mk25bc91vappta34i9a4s.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}
26
2. APLICACIÓN EN FUNCIONAMIENTO.
27
28
3. FIREBASE.
https://drive.google.com/drive/folders/1fkDV_xcCslR5MLSd10VOIVk0IIQWtO1t?
usp=sharing