¿Cómo deshabilitar el desplazamiento de RecyclerView en Android?

RecyclerView es un grupo de vista que se utiliza para mostrar datos de arrays y bases de datos. RecyclerView básicamente es una lista de elementos de los datos. RecyclerView a menudo se conoce como sucesor de GridView y ListView. Puede encontrar más información sobre RecyclerView en RecyclerView en Android con Example . RecyclerView permite a los usuarios desplazarse hacia arriba y hacia abajo, hacia la izquierda y hacia la derecha al configurar la orientación adecuada a través de los atributos. La mayoría de las aplicaciones que usamos hoy en día utilizan de forma destacada RecyclerView para mostrar o presentar los datos. 

RecyclerVer ejemplos

A través de este artículo, queremos mostrarle cómo puede desactivar la capacidad de desplazamiento de RecyclerView en Android.

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Demostramos la aplicación en Kotlin , así que asegúrese de seleccionar Kotlin como idioma principal al crear un nuevo proyecto.

Paso 2: 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 . Cree este RecyclerView simple en el diseño.

XML

<?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">
  
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view_1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
  
</androidx.constraintlayout.widget.ConstraintLayout>

Paso 3: cree una tarjeta para RecyclerView (card.xml)

Necesitamos crear un diseño para mostrar nuestros datos. En nuestro caso, tenemos una lista de ciudades. Entonces, cada una de esas tarjetas mostrará el nombre de la ciudad en TextView.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
  
    <TextView
        android:id="@+id/place_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_marginVertical="30sp"
        android:textSize="70sp"/>
  
</RelativeLayout>

Paso 4: cree un adaptador para RecyclerView (MyRecyclerViewAdapter.kt)

Tenemos que crear un adaptador para pasar datos (array de nombres de ciudades) a RecyclerView.

Kotlin

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
  
private val myItemList = arrayListOf("Delhi", "Mumbai", "Hyderabad", "Bangalore", "Chennai", "Kolkata")
  
class MyRecyclerViewAdapter: RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder>() {
  
    inner class ViewHolder(v: View): RecyclerView.ViewHolder(v), View.OnClickListener{
        val tvPlaceName: TextView = v.findViewById(R.id.place_name)
        override fun onClick(v: View?) {
            TODO()
        }
    }
  
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
        return ViewHolder(LayoutInflater.from(parent.context)
            .inflate(R.layout.card, parent, false))
    }
  
    override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
        holder.tvPlaceName.text = myItemList[position]
    }
  
    override fun getItemCount(): Int {
        return myItemList.size
    }
}

Paso 5: Vincule RecyclerView y Adapter en el código principal (MainActivity.kt)

Consulte los comentarios dentro del código.

Kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring the recycler view from the layout file
        val myRecyclerView = findViewById<RecyclerView>(R.id.recycler_view_1)
  
        // Declaring a variable for 
        // Initializing Linear Layout Manager
        val myLinearLayoutManager = LinearLayoutManager(this)
  
        // Setting the layout manager of the
        // recycler view with the Initialized variable
        myRecyclerView.layoutManager = myLinearLayoutManager
  
        // Setting the adapter of the recycler view
        // with the adapter we created
        myRecyclerView.adapter = MyRecyclerViewAdapter()
  
    }
}

Salida: Ejecutar la aplicación

Puede ver que podemos desplazarnos.

Paso 6: edite el administrador de diseño para deshabilitar el desplazamiento de RecyclerView

Kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val myRecyclerView = findViewById<RecyclerView>(R.id.recycler_view_1)
  
        // Calling the override functions from 
        // the Linear Layout Manager inner class
        val myLinearLayoutManager = object : LinearLayoutManager(this) {
            override fun canScrollVertically(): Boolean {
                return false
            }
        }
        myRecyclerView.layoutManager = myLinearLayoutManager
        myRecyclerView.adapter = MyRecyclerViewAdapter()
    }
}

Salida: ahora ejecute la aplicación

Ahora, puede ver que no podemos desplazarnos.

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 *