[Für Anfänger] Mindestbeispiel für die Anzeige von RecyclerView in Java

Einführung

Bei der Anzeige einer Liste wiederverwendbarer Ansichten unter Android ist ein Widget namens RecyclerView der Mainstream. Aber zuerst kamen mehrere Teile heraus und ich war mir nicht sicher, also werde ich eine Mindestprobe machen.

↓ Abgeschlossenes Bild Screenshot_1588515747.png

Vorbereitung

Fügen Sie RecyclerView zu build.gradle hinzu.


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

Charakter

Schritte zum Anzeigen

  1. Erstellen Sie eine Layoutdatei für RecyclerView
  2. Erstellen Sie ein Layout für ViewHolder (eine Zeilenzeile)
  3. Erstellen Sie einen Adapter / ViewHolder
  4. Generieren Sie RecylerView mit Aktivität

Schauen wir uns jeden an.

1. Erstellen Sie eine Layoutdatei für RecyclerView

Platzieren Sie die RecyclerView über der Aktivität, für die Sie die RecyclerView anzeigen möchten. (Wenn Sie Fragmente verwenden möchten, gilt dies auch für Fragmente.)

スクリーンショット 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. Erstellen Sie ein Layout für ViewHolder (eine Zeilenzeile)

Erstellen Sie als Nächstes ein Layout für eine Zeile. Dieses Mal werde ich es so machen. Dies hängt vom Inhalt der Liste ab, die Sie erstellen möchten.

スクリーンショット 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. Erstellen Sie einen Adapter / ViewHolder

Danach spielt die Reihenfolge keine Rolle mehr, aber dieses Mal bereiten wir zuerst den Adapter vor. Dies liegt daran, dass beim Generieren einer RecyclerView eine Reihe von Adaptern erforderlich ist.


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

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

    /**
     *Eine Datenzeile
     */
    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);
        }
    }

    /**
     *ViewHolder-Erstellungsmethode
     *Nur zuerst angerufen.
     *Hier wird der ViewHolder, der mithilfe der ViewHolder-Layoutdatei als Inflation generiert wurde, an RecyclerView zurückgegeben.
     */
    @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);
    }

    /**
     *Binden Sie ViewHolder und RecyclerView
     *Schreiben Sie hier die Verarbeitung, die Sie gemeinsam für eine Ansichtszeile ausführen möchten. Diesmal habe ich nur den Text eingestellt.
     */
    @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);
    }

    /**
     *Anzahl der Zeilen in der Liste
     */
    @Override
    public int getItemCount() {
        return rowDataList.size();
    }
}

4. Generieren Sie RecylerView mit Aktivität

Erstellen Sie eine RecyclerView mit Aktivität. Stellen Sie den Adapter nach der Generierung ein.

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);

        //Aktivieren Sie die Einstellung, die die Layoutgröße von RecyclerView nicht ändert
        //Einstellungen zur Leistungsverbesserung.
        recyclerView.setHasFixedSize(true);

        //Legen Sie layoutManager in RecyclerView fest.
        //Abhängig vom Typ dieses layoutManager können Sie "einspaltige Liste" oder "zweispaltige Liste" auswählen.
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);

        //Generieren Sie einen Adapter und legen Sie ihn in RecyclerView fest
        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;
    }
}

Ich werde versuchen, es zu bauen, wenn ich es soweit schaffen kann. Screenshot_1588515747.png

Es ist fertig.

Referenz

Recommended Posts

[Für Anfänger] Mindestbeispiel für die Anzeige von RecyclerView in Java
[Für Anfänger] Mindestbeispiel zum Aktualisieren von RecyclerView mit DiffUtils in Java
Anfänger spielen Janken-Spiele in Java
Firestore-Daten in RecyclerView [Java] anzeigen
[Für Anfänger] Führen Sie Selenium auf Java aus
Beispiel zum Entpacken einer gz-Datei in Java
[Für Anfänger] So debuggen Sie mit Eclipse
[Java] [Für Anfänger] So fügen Sie Elemente direkt in ein zweidimensionales Array ein
So zeigen Sie eine Webseite in Java an
Stellen Sie mit vim die Popup-Anzeige für die Java-Sprache ein.
[Einführung in Java] Grundlagen der Java-Arithmetik (für Anfänger)
Punkte, die bei Java beachtet werden müssen, sind gleich
Beispielcode zum Konvertieren von List in List <String> in Java Stream
[Für Anfänger] So bedienen Sie die Stream-API nach Java 8
Einführung in Java für Anfänger Grundkenntnisse der Java-Sprache ①
Ausführen des WebCamCapture-Beispiels von NyARToolkit für Java
Java-Debug-Ausführung [für Java-Anfänger]
[Java] Grundlegende Aussage für Anfänger
[Java] So zeigen Sie Wingdings an
Java für Anfänger, Daten verstecken
Java-Anwendung für Anfänger: Stream
[Für Anfänger] Erläuterung von Klassen, Instanzen und Statik in Java
Mit Java8 LocalDateTime und Java6 Date ist es schwierig, Mindestwerte zu verarbeiten
Für Java-Anfänger: Liste, Karte, Iterator / Array ... Wie konvertiere ich?
Java-Codebeispiel zum Erfassen und Anzeigen von DBLINK-Quell- und Zieldaten in Oracle Database mithilfe von DBLINK
[Für Anfänger] Zusammenfassung des Java-Konstruktors
Java für Anfänger, Ausdrücke und Operatoren 1
Multithreaded passend zur [Java] Vorlage
Ich habe versucht, Java-Anfänger so einzustellen, dass sie Tastenkombinationen in Eclipse verwenden
Wie man JAVA in 7 Tagen lernt
[Für Super-Anfänger] Das Mindestwissen, das Sie mit Hashes und Symbolen berücksichtigen möchten
Java für Anfänger, Ausdrücke und Operatoren 2
Protokollausgabe in Datei in Java
Ein einfaches Beispiel für Rückrufe in Java
Quelle zur Anzeige des Zeichenarrays mit numberPicker in Android Studio (Java)
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
Beispielcode zum Aufrufen der Yahoo! Local Search API in Java
Versuchen Sie, Yuma in Java zu implementieren
Einstellungen für das SSL-Debugging in Java
Java, Arrays für Anfänger
[Für Java-Anfänger] Informationen zur Ausnahmebehandlung
Beispielautomat mit Java
Klassen und Instanzen Java für Anfänger
So verketten Sie Zeichenfolgen mit Java
Anzeigen der in Spring Boot eingegebenen Zeichen im Browser und Referenzlinks [Einführung in Spring Boot / Für Anfänger]
Beispielcode zum Abrufen der wichtigsten JDBC-Typwerte in der Java + H2-Datenbank
Beispielcode zum Serialisieren und Deserialisieren von Java Enum-Enumerationen und JSON in Jackson
Grundlagen der Java-Programmierung - Ich möchte ein Dreieck mit einer for-Anweisung ① anzeigen
Ich habe EX25 des AtCoder Programming Guide für Anfänger (APG4b) in Java geschrieben.
Mindestkonfigurationsbeispiel für die automatische Freigabe von Lambda durch Java mit Code-Pipeline
Grundlagen der Java-Programmierung - Ich möchte ein Dreieck mit einer for-Anweisung ② anzeigen
(Für Super-Anfänger) Getter / Setter und Eigenschaft, in D-Sprache zu denken
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
Versuchen Sie, Project Euler in Java zu lösen
Einfach, Slack Bot mit Java zu machen