Cómo implementar Deslizar hacia abajo para actualizar en Android

Ciertas aplicaciones muestran datos en tiempo real a los usuarios, como precios de acciones, disponibilidad de un producto en tiendas en línea, etc. Mostrar datos en tiempo real requiere una sincronización continua de la aplicación y podría ser posible implementando un programa como un hilo. . La aplicación podría iniciar un subproceso y actualizar la información en tiempo real de forma implícita o explícita. El trato aquí es actualizar continuamente los datos (quizás desde los servidores) a costa de RAM, caché y batería adicionales del dispositivo, lo que resulta en un bajo rendimiento, ya que un subproceso que se ejecuta para siempre ocupa algo de espacio y requiere energía. Para evitar el uso de dichos programas, los desarrolladores desarrollaron explícitamente una función para actualizar la aplicación, de modo que el usuario pueda ejecutarla cuando sea necesario. Esto nos lleva a concluir que la actualización manual tiene ventajas como:

  1. Optimización de RAM
  2. Optimización de memoria caché
  3. Optimización de la duración de la batería
  4. Evitar devoluciones de llamadas innecesarias.

Por ejemplo, en la siguiente imagen, cuando el usuario deslice hacia abajo la pantalla, la string «Deslizar para actualizar» se cambiará a «Actualizado».

Swipe Down to Refresh in Android

Acercarse:

Paso 1: antes de comenzar a escribir el código, es esencial agregar una dependencia de Swipe Refresh Layout en el build.Gradle de la aplicación para habilitar los diseños de deslizamiento. Esta dependencia es:

implementación «androidx.swiperefreshlayout:swiperefreshlayout:1.1.0»

Paso 2: Es importante comenzar con el Front-End » actividad_principal.xml «. Cree un SwipeRefreshLayout para actualizar el diseño y agregue un TextView para mostrar la string en la pantalla y proporcionarles ciertas ID. 

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    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">
  
    <!--Swipe Refresh Layout -->
    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    android:id="@+id/refreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <!--TextView -->
    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Swipe to refresh"
        />
    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
    
</RelativeLayout>

 
Paso 3: Llegando al archivo » MainActivity «, a continuación se proporciona una vista previa del mismo. En este archivo, conecte swipeRefreshLayout y textView a su archivo XML utilizando el método. Y también llame al para cambiar el texto después de que el usuario deslice hacia abajo la pantalla. Los usuarios también pueden escribir los códigos requeridos según sus necesidades dentro de este método. 

Kotlin

import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import org.w3c.dom.Text
  
class MainActivity : AppCompatActivity() {
    @SuppressLint("SetTextI18n")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)       
          
    // Declaring a layout (changes are to be made to this)
    // Declaring a textview (which is inside the layout)
    val swipeRefreshLayout = findViewById<SwipeRefreshLayout>(R.id.refreshLayout)
    val textView = findViewById<TextView>(R.id.tv1)
  
    // Refresh function for the layout
    swipeRefreshLayout.setOnRefreshListener{
        
      // Your code goes here
      // In this code, we are just changing the text in the 
      // textbox
      textView.text = "Refreshed"
            
      // This line is important as it explicitly refreshes only once
      // If "true" it implicitly refreshes forever
      swipeRefreshLayout.isRefreshing = false
        }
    }
}

Java

import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import org.w3c.dom.Text
  
public class MainActivity extends AppCompatActivity {
  
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
    // Declaring a layout (changes are to be made to this)
    // Declaring a textview (which is inside the layout)
    SwipeRefreshLayout swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.refreshLayout);   
    TextView textView = (TextView)findViewById(R.id.tv1);
  
    // Refresh  the layout
    swipeRefreshLayout.setOnRefreshListener(
    new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
  
          // Your code goes here
          // In this code, we are just 
          // changing the text in the textbox
          textView.text = "Refreshed"
  
          // This line is important as it explicitly 
          // refreshes only once
          // If "true" it implicitly refreshes forever
          swipeRefreshLayout.setRefreshing(false);
            }
        }
    );
 }
}

Salida: ejecutar en el emulador

Ventajas

Por supuesto, no son sólo los usuarios los que se benefician. Suponiendo una aplicación, donde la información se obtiene directamente de un repositorio en la nube. Por cada solicitud de devolución de llamada (hacia la nube), el desarrollador que posee dicho repositorio paga una cantidad mínima por el servicio, ya sea Google Cloud Platform (GCP) , Amazon Web Services (AWS) o cualquier otra cosa. 

Publicación traducida automáticamente

Artículo escrito por aashaypawar 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 *