📱 Ejercicio.- Sistema de cobro en Android Studio 3da parte [18]
En este video vamos continuar con el sistema de cobro en Android Studio 3da parte anterior y vamos a hacer la el área de pago y redondeo de cambio.
- Agregaremos un EditText para recibir el pago y un ViewText para mostrar el cambio a entregar.
- Crearemos la función pagar que estará vinculada al botón pagar que ara lo siguiente:
- Calcular el cambio y los centavos
- Si hay centavos a devolver mostraremos un alertDialog que dirá:
- Si desea redondear su cambio se restaran los centavos y se agradecerá por su donativo.
- Si no desea redondear su cambio se entregará el cambio completo.
Sintaxis de AlertDialog
AlertDialog.Builder
AlertDialog.setTitle(“String”)
AlertDialog.setMessage(“String”)
AlertDialog.setPositiveButton(“Si”){
dialogInterface: DialogInterface, i: Int –
//Codigo
}
AlertDialog.setNegativeButton(“No”){
dialogInterface: DialogInterface, i: Int –
//Codigo
}
val alert: AlertDialog = dialogoAlerta.create()
alert.setCanceledOnTouchOutside(false)
alert.show()
package com.programadornovato.miprimerproyecto import android.content.DialogInterface import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.* import androidx.appcompat.app.AlertDialog import java.math.BigDecimal import kotlin.math.PI import kotlin.math.round class MainActivity : AppCompatActivity() { private var txtPrecio:EditText?=null private var tvLista:TextView?=null private var tvTotal:TextView?=null private var txtPago:EditText?=null private var tvCambio:TextView?=null private var contador=0 private var listaProductos=ArrayList<Double>() private var total=0.0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) txtPrecio=findViewById(R.id.txtPrecio) tvLista=findViewById(R.id.tvLista) tvTotal=findViewById(R.id.tvTotal) txtPago=findViewById(R.id.txtPago) tvCambio=findViewById(R.id.tvCambio) } fun agregar(view: View){ var precio=txtPrecio?.text.toString().toDouble() listaProductos.add(precio) tvLista?.text=tvLista?.text.toString()+"\n"+"Producto ${contador+1}=%.2f".format(precio) contador++ txtPrecio?.setText("") total=0.0 listaProductos.forEach{ total=total+it } tvTotal?.text="Total=%.2f".format(total) } fun pagar(view: View){ var pago=txtPago?.text.toString().toDouble() var cambio=pago-total var centavos=cambio-cambio.toInt() if(centavos>0.0){ val dialogo:AlertDialog.Builder=AlertDialog.Builder(this) dialogo.setTitle("¿Deseas donar tus centavos?") dialogo.setMessage("Haz click para donar %.2f".format(centavos)+" centavos") dialogo.setPositiveButton("Si"){ dialogInterface: DialogInterface, i: Int -> Toast.makeText(this,"Gracias por donar %.2f".format(centavos)+" centavos",Toast.LENGTH_LONG).show() tvCambio?.text="Su cambio es de %.2f".format(cambio-centavos) } dialogo.setNegativeButton("No"){ dialogInterface: DialogInterface, i: Int -> Toast.makeText(this,"Gracias por nada por favor no regreses",Toast.LENGTH_LONG).show() tvCambio?.text="Su cambio es de %.2f".format(cambio) } val alerta:AlertDialog=dialogo.create() alerta.setCanceledOnTouchOutside(false) alerta.show() }else{ tvCambio?.text="Su cambio es de %.2f".format(cambio) } } }
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.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=".MainActivity"> <TextView android:id="@+id/textView" android:layout_width="322dp" android:layout_height="30dp" android:layout_marginTop="16dp" android:text="Bienvenido humano a la tienda del PN" android:textSize="18sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.632" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/txtPrecio" android:layout_width="363dp" android:layout_height="wrap_content" android:layout_marginStart="24dp" android:layout_marginLeft="24dp" android:layout_marginTop="24dp" android:ems="10" android:hint="Humano coloca el precio" android:inputType="numberDecimal" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" /> <Button android:id="@+id/btnAgregar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginEnd="24dp" android:layout_marginRight="24dp" android:onClick="agregar" android:text="Agregar" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/txtPrecio" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="24dp" android:layout_marginLeft="24dp" android:layout_marginTop="24dp" android:text="Lista de productos" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/btnAgregar" /> <TextView android:id="@+id/tvLista" android:layout_width="336dp" android:layout_height="110dp" android:layout_marginStart="24dp" android:layout_marginLeft="24dp" android:layout_marginTop="16dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView2" /> <Button android:id="@+id/btnPagar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:layout_marginEnd="24dp" android:layout_marginRight="24dp" android:onClick="pagar" android:text="Pagar" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/txtPago" /> <TextView android:id="@+id/tvTotal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginEnd="24dp" android:layout_marginRight="24dp" android:text="total" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvLista" /> <EditText android:id="@+id/txtPago" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:layout_marginEnd="24dp" android:layout_marginRight="24dp" android:ems="10" android:hint="Pago" android:inputType="numberDecimal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvTotal" /> <TextView android:id="@+id/tvCambio" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:layout_marginEnd="24dp" android:layout_marginRight="24dp" android:text="cambio" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/btnPagar" /> </androidx.constraintlayout.widget.ConstraintLayout>
🎦 Lista de reproducción de este curso: https://www.youtube.com/watch?v=3ZUlE_tvfaM&list=PLCTD_CpMeEKRL2-HaZThebGcyyR3_RshO&ab_channel=programadornovato
🎦 Curso de Android Studio: https://www.youtube.com/watch?v=AHyTqIB_8Rs&list=PLCTD_CpMeEKTT9pb9J-89j1SPtqHzU7sF&ab_channel=programadornovato
🎦 [Curso] Java Netbeans Completo☕: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTT-qEHGqZH3fkBgXH4GOTF
🎦 [Curso] Kotlin de 0 a 100: https://www.youtube.com/playlist?list=PLCTD_CpMeEKSjzbsW_zmVNz23GyOVsdbS
🎦 [Curso] Java Netbeans Completo☕: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTT-qEHGqZH3fkBgXH4GOTF
🔗 Facebook: https://facebook.com/ProgramadorNovatoOficial
🔗 Twitter: https://twitter.com/programadornova
🔗 Linkedin: https://www.linkedin.com/in/programadornovato/
🔗 Instagram: https://www.instagram.com/programadornovato/
🔗 Pagina oficial: https://www.programadornovato.com
🔗 Gracias por apoyar este canal: https://www.patreon.com/programadornovato
Anterior tutorial Siguiente tutorial