[Pour les débutants] Exemple minimum pour afficher RecyclerView en Java

introduction

Lors de l'affichage d'une liste de vues réutilisables sur Android, un widget appelé RecyclerView est le grand public. Mais au début, plusieurs parties sont sorties et je n'étais pas sûr, donc je vais faire un échantillon minimum.

↓ Image terminée Screenshot_1588515747.png

Préparation

Ajoutez RecyclerView à build.gradle.


dependencies {
    implementation "androidx.recyclerview:recyclerview:1.1.0"

Personnage

Étapes à afficher

  1. Créez un fichier de mise en page pour RecyclerView
  2. Créer une mise en page pour ViewHolder (une ligne de liste)
  3. Créer un adaptateur / ViewHolder
  4. Générer RecylerView avec activité

Regardons chacun d'eux.

1. Créez un fichier de mise en page pour RecyclerView

Placez le RecyclerView au-dessus de l'activité pour laquelle vous souhaitez afficher le RecyclerView. (Si vous souhaitez utiliser des fragments, il en va de même pour les fragments.)

スクリーンショット 2020-05-03 22.08.58.png
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    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"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/main_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

2. Créer une mise en page pour ViewHolder (une ligne de liste)

Ensuite, créez une mise en page pour une ligne. Cette fois, je vais faire comme ça. Cela dépend du contenu de la liste que vous souhaitez créer.

スクリーンショット 2020-05-03 22.24.24.png
<?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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="12dp">

    <ImageView
        android:id="@+id/hoge_image_view"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@mipmap/ic_launcher"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"/>

    <TextView
        android:id="@+id/hoge_title_text_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="12dp"
        android:text="hogeTitle"
        android:textSize="24dp"
        app:layout_constraintTop_toTopOf="@id/hoge_image_view"
        app:layout_constraintStart_toEndOf="@id/hoge_image_view"
        app:layout_constraintEnd_toEndOf="parent"/>

    <TextView
        android:id="@+id/hoge_contents_text_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="hogeContents"
        android:layout_marginTop="12dp"
        app:layout_constraintTop_toBottomOf="@id/hoge_title_text_view"
        app:layout_constraintStart_toStartOf="@id/hoge_title_text_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

3. Créer un adaptateur / ViewHolder

Après cela, l'ordre n'a pas vraiment d'importance, mais cette fois, nous préparerons d'abord l'adaptateur. Cela est dû au fait qu'un ensemble d'adaptateurs est requis lors de la génération d'un RecyclerView.


public class MainAdapter extends RecyclerView.Adapter<MainAdapter.MainViewHolder> {
    
    private List<RowData> rowDataList;

    MainAdapter(List<RowData> rowDataList) {
        this.rowDataList = rowDataList;
    }

    /**
     *Une ligne de données
     */
    static class MainViewHolder extends RecyclerView.ViewHolder {
        ImageView hogeImage;
        TextView hogeTitle;
        TextView hogeContents;

        MainViewHolder(@NonNull View itemView) {
            super(itemView);
            hogeImage = itemView.findViewById(R.id.hoge_image_view);
            hogeTitle = itemView.findViewById(R.id.hoge_title_text_view);
            hogeContents = itemView.findViewById(R.id.hoge_contents_text_view);
        }
    }

    /**
     *Méthode de création ViewHolder
     *Seulement appelé en premier.
     *Ici, le ViewHolder généré à l'aide du fichier de disposition ViewHolder comme inflation est renvoyé à RecyclerView.
     */
    @NonNull
    @Override
    public MainViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_holder_main, parent, false);
        return new MainViewHolder(view);
    }

    /**
     *Lier ViewHolder et RecyclerView
     *Écrivez ici le traitement que vous voulez faire en commun pour une ligne de View. Cette fois, je ne mets que le texte.
     */
    @Override
    public void onBindViewHolder(@NonNull MainViewHolder holder, int position) {
        RowData rowData = this.rowDataList.get(position);
        holder.hogeTitle.setText(rowData.hogeTitle);
        holder.hogeContents.setText(rowData.hogeContents);
    }

    /**
     *Nombre de lignes dans la liste
     */
    @Override
    public int getItemCount() {
        return rowDataList.size();
    }
}

4. Générer RecylerView avec activité

Créez un RecyclerView avec activité. Une fois généré, définissez l'adaptateur.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView recyclerView = findViewById(R.id.main_recycler_view);

        //Activez le paramètre qui ne modifie pas la taille de la mise en page de RecyclerView
        //Paramètres pour améliorer les performances.
        recyclerView.setHasFixedSize(true);

        //Définissez layoutManager dans RecyclerView.
        //Selon le type de ce layoutManager, vous pouvez sélectionner "liste à une colonne" ou "liste à deux colonnes".
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);

        //Générer l'adaptateur et le définir dans RecyclerView
        RecyclerView.Adapter mainAdapter = new MainAdapter(createRowData());
        recyclerView.setAdapter(mainAdapter);
    }

    private List<RowData> createRowData() {
        List<RowData> dataSet = new ArrayList<>();
        int i = 0;
        while (i < 20) {
            RowData data = new RowData();

            data.hogeTitle = "HogeTitle!!";
            data.hogeContents = "HogeHogeHogeHogeHogeHogeHogeHogeHogeHogeHoge";

            dataSet.add(data);
            i = i + 1;
        }
        return dataSet;
    }

    class RowData {
        Image hogeImage;
        String hogeTitle;
        String hogeContents;
    }
}

J'essaierai de le construire quand je pourrai le faire jusqu'à présent. Screenshot_1588515747.png

C'est fait.

référence

Recommended Posts

[Pour les débutants] Exemple minimum pour afficher RecyclerView en Java
[Pour les débutants] Exemple minimum pour mettre à jour RecyclerView avec DiffUtils en Java
Les débutants jouent à des jeux Janken en Java
Afficher les données Firestore dans RecyclerView [Java]
[Pour les débutants] Exécutez Selenium sur Java
Exemple pour décompresser le fichier gz en Java
[Pour les débutants] Comment déboguer avec Eclipse
[Java] [Pour les débutants] Comment insérer des éléments directement dans un tableau à deux dimensions
Comment afficher une page Web en Java
Définissez un affichage contextuel pour le langage Java avec vim.
[Introduction à Java] Bases de l'arithmétique Java (pour les débutants)
Points à connaître avec Java Equals
Exemple de code pour convertir List en List <String> dans Java Stream
[Pour les débutants] Comment utiliser Stream API après Java 8
Introduction à Java pour les débutants Connaissance de base du langage Java ①
Comment exécuter l'exemple WebCamCapture de NyARToolkit pour Java
Exécution de débogage Java [pour les débutants Java]
[Java] Instruction de base pour les débutants
[Java] Comment afficher les Wingdings
Java pour les débutants, masquage des données
Application Java pour les débutants: stream
[Pour les débutants] Explication des classes, des instances et des statiques en Java
Difficile de gérer les valeurs minimales avec Java8 LocalDateTime et Java6 Date
Pour les débutants Java: List, Map, Iterator / Array ... Comment convertir?
Exemple de code Java pour acquérir et afficher les données source et de destination DBLINK dans Oracle Database à l'aide de DBLINK
[Pour les débutants] Résumé du constructeur java
Java pour les débutants, les expressions et les opérateurs 1
Multithread pour s'adapter au modèle [Java]
J'ai essayé de configurer les débutants Java pour qu'ils utilisent des touches de raccourci dans eclipse
Comment apprendre JAVA en 7 jours
[Pour les super débutants] Les connaissances minimales que vous voulez garder à l'esprit avec les hachages et les symboles
Java pour les débutants, les expressions et les opérateurs 2
Enregistrer la sortie dans un fichier en Java
Un exemple simple de rappels en Java
Source pour afficher le tableau de caractères avec numberPicker dans Android Studio (Java)
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Exemple de code pour appeler l'API Yahoo! Local Search en Java
Essayez d'implémenter Yuma en Java
Paramètres de débogage SSL dans Java
Java, des tableaux pour débuter avec les débutants
[Pour les débutants en Java] À propos de la gestion des exceptions
Distributeur automatique d'échantillons fabriqué avec Java
Classes et instances Java pour les débutants
Comment concaténer des chaînes avec Java
Comment afficher les caractères saisis dans Spring Boot sur le navigateur et les liens de référence [Introduction à Spring Boot / Pour les débutants]
Exemple de code pour obtenir les valeurs de type JDBC clés dans la base de données Java + H2
Exemple de code pour la sérialisation et la désérialisation des énumérations Java Enum et JSON dans Jackson
Pratique des bases de la programmation Java - Je veux afficher un triangle avec une instruction for ①
J'ai écrit EX25 du guide de programmation AtCoder pour les débutants (APG4b) en java.
Exemple de configuration minimale pour publier automatiquement Lambda par Java avec un pipeline de code
Pratique des bases de la programmation Java - Je veux afficher un triangle avec une instruction for ②
(Pour les super débutants) Getter / setter et propriété pour penser en langage D
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Essayez de résoudre Project Euler en Java
Facile à créer Slack Bot avec Java