Categorías
Otros

Desarrollo de aplicaciones Android-RecyclerView control de desplazamiento

Palabras clave:
Desarrollo de aplicaciones para teléfonos móviles Android, control RecyclerView

Entorno de desarrollo: Windows 10 x64, android studio2.2

Función de realización: utilice el control RecyclerView para lograr un efecto desplazable y el contenido y el diseño de cada elemento desplazable del control se pueden diseñar libremente.

El proceso específico: importar el kit de herramientas, usarlo en el archivo de diseño, escribir el diseño del elemento unitario, escribir el adaptador, escribir los datos en segundo plano para mostrarlos en primer plano y diseñar un evento de clic para cada elemento de unidad.

Representaciones generales, puede deslizarse hacia arriba y hacia abajo para mostrar otro contenido

archivos de proyectoUso del control de desplazamiento RecyclerViewPuede descargar y ver por sí mismo

1. Importe el kit de herramientas

En primer lugar, haga doble clic en Grande Scripts/build.gradle(Module:app) para abrir el archivo de configuración de la aplicación y agregarlo

compile 'com.android.support:recyclerview-v7:26.+'

entre ellos26.+Puede cambiarlo según el número de versión del SDK generado por su Android, como

Después de agregar la información del paquete, haga clic en Sincronizar ahora, si su estudio de Android no aparece automáticamente esa opción, puede seleccionarla directamente en esta ubicación

Un proceso más detallado puede referirse aBase de datos de operaciones de desarrollo de aplicaciones Android-LitePalEl primer paso en

2. Utilí con él en el diseño

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>

Al escribir este control, solo necesita escribir RecyclerView, y el estudio de Android aparecerá automáticamente lo que necesita. Recuerde que este lugar debe escribirse en su totalidad, porque el RecyclerView control no está integrado en el SDK del sistema, debe ser Escribir la ruta de acceso completa, que es el nombre completo

3. Escriba el diseño de los elementos de la unidad

Primero crea un nuevo archivo de diseño en app/res/layout, el nombre de archivo se llama recyclerview_item

Al principio de la creación, habrá este atributo, aquí lo eliminamos, porque lo que necesitamos aquí es un diseño lineal de izquierda a derecha en lugar de un diseño lineal de arriba a abajo.

android:orientation="vertical"

A continuación, personalizamos el diseño de cada elemento de unidad en el control de desplazamiento

Lo que tienes que prestar atención aquí es la línea roja. Otros archivos de diseño aquí son básicamente atributos match_parent. El atributo wrap_content aquí significa que la altura de este diseño es igual a la altura total de su contenido, es decir, la altura de este diseño sigue su nivel interno La altura total del contenido está cambiando
Debido a que el diseño que escribimos es uno de los elementos de la unidad en el control de desplazamiento, su altura no se puede match_parent, sino solo wrap_content

4. Escriba el adaptador

Adaptador, simplemente significa conversión de interfaz, nuestro enchufe de carga de teléfono móvil se puede decir que es una especie de adaptador, que convierte la energía eléctrica de 220V-50Hz en la energía eléctrica que nuestro teléfono móvil puede utilizar normalmente; y convertidor OTG, conectar una interfaz USB al teléfono móvil, Convertir el puerto USB en el puerto de carga de nuestro teléfono móvil. y muchos más.

  Cómo escribir un artículo de MBA - que involucra el modelado matlab

Aquellos que estén interesados pueden aprender sobre el adaptador en el sentido físico, o aprender sobre el patrón de diseño- el patrón de adaptador en el diseño de software.

A continuación empezamos a escribir el adaptador. Antes de escribir el adaptador, necesitamos una clase para almacenar los datos necesarios en cada elemento de unidad en el control de desplazamiento.
p. ej.

Primero vamos a crear un paquete Dao, que almacena todos los Java Beans, es decir, clases que generalmente solo contienen variables miembro y métodos getter y setter.
Proceso de creación más detallado y consejos se pueden referar aBase de datos de operaciones de desarrollo de aplicaciones Android-LitePalLa tercera parte de

Luego escribimos el adaptador que necesitamos en el paquete adaptador

// The package here is filled in according to your own situation, or automatically generated by Android studio
package ......;

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.administrator.recyclerviewtest.Dao.RecyclerViewItem;
import com.example.administrator.recyclerviewtest.R;

import java.util.List;

/**
 * Created by Administrator on 2020/11/23.
 */

// Inherited a RecyclerView.Adapter class, the content in the following <> is a limitation
// Same as the limited meaning of List<String>, it can be understood that only String objects can be added to this List
// What I do here is limited to an internal class in the RecyclerViewAdapter class, named ViewHolder
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

	// An object that stores all data in the scroll control
	// Each object in the List is each unit item in the scroll control
    private List<RecyclerViewItem> recyclerViewItemList;

    // Internal class, where the controls in the unit item layout are obtained into the code behind
    static class ViewHolder extends RecyclerView.ViewHolder {
        // Each control in the layout file used to store each unit item in the scroll control
        // That is the control in the recyclerview_item.layout layout we just wrote
        TextView leftTextView;
        TextView rightTextView;

        // is the constructor of the inner class, the passed parameter View is the layout file View of each unit item in the scroll control
        public ViewHolder (View view) {
            super(view);
            // Get the controls of the layout file here
            leftTextView = (TextView) view.findViewById(R.id.textview_item_left);
            rightTextView = (TextView) view.findViewById(R.id.textview_item_right);
        }
    }
    // The constructor of the RecyclerViewAdapter class, we will pass a List to it from MainActivity, as
    // Scroll all items to be displayed in the control, each object is a unit item
    // Or you can pass in two, three, four parameters or something, you can DIY by yourself
    public RecyclerViewAdapter(List<RecyclerViewItem> recyclerViewItemList) {
        this.recyclerViewItemList = recyclerViewItemList;
    }

    // It is a virtual function (abstract method) that the RecyclerViewAdapter class inherits from RecyclerView.Adapter and needs to be implemented
    // Press Alt+Insert to select Implement Methods, select all to add
    // Override means that the method of the next line is the method of the parent class, which is rewritten here (implementation)
    // This method can set the click event for each unit item
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return null;
    }

    // This method indicates how to display each unit item
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

    }
	
	// Return the number of unit items, just change it to this 
    @Override
    public int getItemCount() {
        return recyclerViewItemList.size();
    }
}

De este modo, se configura el marco básico del adaptador. A continuación, necesitamos mejorar dos funciones, a saber, onCreateViewHolder y onBindViewHolder, dos métodos de interfaz heredados de la clase primaria y deben implementarse.

  Entrada básica del índice Mysql InnoDB

Veamos primero el método onBindViewHolder. Este método indica cómo mostrar el contenido de cada elemento de unidad.

    // This method indicates how to display each unit item
    // The first parameter represents the internal class ViewHolder we created in this class RecyclerViewAdapter
    // And this holder is the layout file of the unit item
    // The second parameter indicates which unit item should be displayed now, counting from 0
    // We can use position%2==1 to process the parity items separately, or other
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        // First get the position object from the recyclerViewItemList as the content of the operation
        // The writing here is quite satisfactory, you can also DIY according to your own ideas
        RecyclerViewItem recyclerViewItem = recyclerViewItemList.get(position);
        holder.leftTextView.setText(recyclerViewItem.getLeftString());
        holder.rightTextView.setText(recyclerViewItem.getRightString());
    }

A continuación, es establecer el evento click enCreateViewHolder método de cada elemento, podemos explicar esto más adelante, no establecer ningún evento de clic por ahora

    // It is a virtual function (abstract method) that the RecyclerViewAdapter class inherits from RecyclerView.Adapter and needs to be implemented
    // Press Alt+Insert to select Implement Methods, select all to add
    // Override means that the method of the next line is the method of the parent class, which is rewritten here (implementation)
    // This method can set the click event for each unit item
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // Get the Layout we need from the parent object, namely R.layout.recyclerview_item.
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item, parent, false);
        // Create the ViewHolder object needed in the onBindViewHolder object, this time we will call the constructor of the ViewHolder internal class we wrote
        ViewHolder viewHolder = new ViewHolder(view);
        // This place must return this thing, otherwise the onBindViewHolder method below will not get the holder, and it will report a null pointer exception.
        return viewHolder;
    }

Hasta ahora, nuestro adaptador ha llegado a su fin.

5. Datos de entrada (nivel de código)

En este momento, necesitamos transferir datos al control RecyclerView front-end, para que puedan mostrar información desplazable normalmente
El proceso general es: ahora creamos la matriz de datos necesaria en el control de desplazamiento en MainActivity y, a continuación, la pasamos al adaptador y, a continuación, asignamos este adaptador para el RecyclerView control en la página de front-end.

1. Inicializar la información en MainActivity
Debe tenerse en cuenta que incluso si sólo hay un control front-end que necesita establecer una conexión con el objeto back-end, es mejor utilizar un formulario como initData(), que es claro, claro y fácil de eliminar. Propicio para el desarrolloBuenos hábitos de compilación

2. Comience a transmitir datos al adaptador

    // This is the spokesperson of the front-end page RecyclerView in the background
    private RecyclerView mainRecyclerView;
    // This is an array that stores data in all scrolling controls
    private List<RecyclerViewItem> recyclerViewItemList = new ArrayList<RecyclerViewItem>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initData();

        // These two sentences indicate the layout of the specified RecyclerView control
        // Here we choose the linear layout of LinearLayout
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        mainRecyclerView.setLayoutManager(layoutManager);

        // This sentence is to create an adapter, an adapter written by ourselves
        // The new behind is to call the constructor in the adapter, we can change the adapter
        // Construct function to realize the transfer of various data
        // Here we pass the list of ten elements we created in initList to the adapter
        RecyclerViewAdapter adapter = new RecyclerViewAdapter(recyclerViewItemList);
        // Specify an adapter for the RecyclerView of the front-end page
        mainRecyclerView.setAdapter(adapter);
    }

No olvide asignar un valor inicial a la variable miembro recyclerViewItemList, es decir, inicializar, de lo contrario notificará una excepción de puntero nulo al ejecutarse en el recyclerViewItemList.add(temp); Declaración. Sólo asignar el valor como lo hice anteriormente

  leetcode mysql ranking_leetcode base de datos

Hasta ahora, una aplicación de estudio androide que utiliza el RecyclerView control está casi hecho.
También puede usar la base de datos para obtener datos, crear una lista de la información de datos obtenida de la base de datos en el método initList

En este momento, si ejecutamos la prueba, será así

Con el fin de mejorar la legibilidad, añadimos dos líneas de atributos al archivo de diseño recyclerview_item.xml, para que podamos ver el contenido que mostramos al principio

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:layout_marginBottom="10dp"
    android:background="#ffff00"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

6. Establezca el evento click para cada elemento de unidad

Debe tenerse en cuenta que al establecer el evento click en él, establezca vewHolder en el tipo final

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // Get the Layout we need from the parent object, namely R.layout.recyclerview_item.
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item, parent, false);
        // Create the ViewHolder object needed in the onBindViewHolder object, this time we will call the constructor of the ViewHolder internal class we wrote
        final ViewHolder viewHolder = new ViewHolder(view);
        viewHolder.leftTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Get the index of the unit item clicked by the current user, that is, which unit item the user clicked
                int position = viewHolder.getAdapterPosition();
                // Get the object whose index is position in the array list to get the content of the unit item that the user clicked
                RecyclerViewItem recyclerViewItem = recyclerViewItemList.get(position);
                // Get the current context, you can use this to use Intent to jump to the page
                Context context = v.getContext();
            }
        });
        // This place must return this thing, otherwise the onBindViewHolder method below will not get the holder, and it will report a null pointer exception.
        return viewHolder;
    }

.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

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