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