Android: actualice los datos en la API usando Volley con Kotlin

Las aplicaciones de Android usan API para obtener los datos de los servidores en las aplicaciones de Android. Con la ayuda de las API, podemos agregar, leer, actualizar y eliminar los datos de nuestra base de datos mediante las API. Podemos usar Volley y Retrofit para consumir datos de API dentro de la aplicación de Android. En este artículo, veremos cómo actualizar datos en API usando Volley en Android usando Kotlin. 

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Cómo crear/iniciar un nuevo proyecto en Android Studio

Paso 2: agregue la dependencia a continuación en su archivo build.gradle

A continuación se muestra la dependencia de Volley que usaremos para obtener los datos de la API. Para agregar esta dependencia, vaya a la aplicación > Gradle Scripts > build.gradle(app) y agregue la dependencia a continuación en la sección de dependencias.

// below line is used for volley library
implementation ‘com.android.volley:volley:1.1.1’

Después de agregar esta dependencia, sincronice su proyecto y ahora muévase hacia la parte AndroidManifest.xml.  

Paso 3: agregar permisos a Internet en el archivo AndroidManifest.xml

Vaya a la aplicación > AndroidManifest.xml y agréguele el siguiente código. 

XML

<uses-permission android:name="android.permission.INTERNET"/>

Paso 4: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml. 

XML

<?xml version="1.0" encoding="utf-8"?>
<!--on below line we are creating a swipe to refresh layout-->
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:orientation="vertical"
    tools:context=".MainActivity">
  
    <!--text view for displaying app name-->
    <TextView
        android:id="@+id/idTVPayment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="10dp"
        android:text="@string/app_name"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="20sp"
        android:textStyle="bold" />
  
    <!--edit text for our user name-->
    <EditText
        android:id="@+id/idEdtUserName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="10dp"
        android:hint="User Name" />
  
    <!--edit text for our job-->
    <EditText
        android:id="@+id/idEdtJob"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:hint="Job" />
  
    <!--button to update our data-->
    <Button
        android:id="@+id/idBtnUpdate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:text="Update Data"
        android:textAllCaps="false" />
  
    <!--progress bar for the purpose of loading-->
    <ProgressBar
        android:id="@+id/idPBLoading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="gone" />
  
    <!--text view to display our 
        response after updating data-->
    <TextView
        android:id="@+id/idTVResponse"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:gravity="center_horizontal"
        android:text="Response"
        android:textAlignment="center"
        android:textColor="@color/black"
        android:textSize="15sp" />
    
</LinearLayout>

Paso 5: trabajar con el archivo MainActivity.kt

Vaya a aplicación>java>nombre del paquete de su aplicación>archivo MainActivity.kt y agréguele el siguiente código. Se agregan comentarios en el código para conocer en detalle. 

Kotlin

package com.gtappdevelopers.kotlingfgproject
  
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import android.view.View
import android.widget.*
import androidx.appcompat.app.AppCompatActivity
import com.android.volley.Request
import com.android.volley.Response
import com.android.volley.VolleyError
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley
import org.json.JSONException
import org.json.JSONObject
  
class MainActivity : AppCompatActivity() {
  
    // on below line we are creating variables.
    lateinit var nameEdt: EditText
    lateinit var jobEdt: EditText
    lateinit var updateBtn: Button
    lateinit var resultTV: TextView
    lateinit var loadingPB: ProgressBar
    var url = "https://reqres.in/api/users/2"
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // initializing all our variables.
        nameEdt = findViewById(R.id.idEdtUserName)
        jobEdt = findViewById(R.id.idEdtJob)
        updateBtn = findViewById(R.id.idBtnUpdate)
        resultTV = findViewById(R.id.idTVResponse)
        loadingPB = findViewById(R.id.idPBLoading)
  
        // on below line we are adding 
          // click listener for our update button.
        updateBtn.setOnClickListener {
            // validating user inputs
            if (TextUtils.isEmpty(nameEdt.text) && TextUtils.isEmpty(jobEdt.text)) {
                // on below line we are displaying toast message
                Toast.makeText(this, "Please enter your data..", Toast.LENGTH_SHORT).show()
            }
            addData(nameEdt.text.toString(), jobEdt.text.toString())
        }
    }
  
    private fun addData(userName: String, job: String) {
        // on below line we are displaying our progress bar.
        loadingPB.visibility = View.VISIBLE
  
        // creating a new variable for our request queue
        val queue = Volley.newRequestQueue(this@MainActivity)
  
        // making a string request to update our data and
        // passing method as PUT. to update our data.
        val request: StringRequest =
            object : StringRequest(Request.Method.PUT, url, object : Response.Listener<String?> {
                override fun onResponse(response: String?) {
  
                    // hiding our progress bar.
                    loadingPB.visibility = View.GONE
  
                    // inside on response method we are
                    // setting our edit text to empty.
                    jobEdt.setText("")
                    nameEdt.setText("")
  
                    // on below line we are displaying a toast message as data updated.
                    Toast.makeText(this@MainActivity, "Data Updated..", Toast.LENGTH_SHORT).show()
                    try {
                        // on below line we are extracting data from our json object
                        // and passing our response to our json object.
                        val jsonObject = JSONObject(response)
  
                        // creating a string for our output.
                        val result =
                            "User Name : " + jsonObject.getString("name") + "\n" + "Job : " + jsonObject.getString(
                                "job"
                            ) + "\n" + "Updated At : " + jsonObject.getString("updatedAt")
  
                        // on below line we are setting
                        // our string to our text view.
                        resultTV.setText(result)
                    } catch (e: JSONException) {
                        e.printStackTrace()
                    }
                }
            }, object : Response.ErrorListener {
                override fun onErrorResponse(error: VolleyError?) {
                    // displaying toast message on response failure.
                    Log.e("tag", "error is " + error!!.message)
                    Toast.makeText(this@MainActivity, "Fail to update data..", Toast.LENGTH_SHORT)
                        .show()
                }
            }) {
                override fun getParams(): Map<String, String>? {
  
                    // below line we are creating a map for storing
                    // our values in key and value pair.
                    val params: MutableMap<String, String> = HashMap()
  
                    // on below line we are passing our key
                    // and value pair to our parameters.
                    params["name"] = userName
                    params["job"] = job
  
                    // at last we are
                    // returning our params.
                    return params
                }
            }
        // below line is to make
        // a json object request.
        queue.add(request)
    }
}

Ahora ejecute su aplicación para ver el resultado. 

Producción:

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *