Firestore-Daten in RecyclerView [Java] anzeigen

Ich wollte etwas tun, das die RecyclerView-Anzeige jedes Mal aktualisiert, wenn die Firestore-Daten aktualisiert wurden, aber es fiel mir schwer, weil keine Artikel auf Japanisch geschrieben waren.

In diesem Artikel finden Sie unter Firebase-Benutzeroberfläche für Cloud-Firestore und verwenden Sie ** Firestore Recycler Adapter **, um eine Chat-App zu erstellen. Ich werde es schaffen.

Wenn Sie noch keine Datenbank in Firestore erstellt haben, lesen Sie bitte Try Cloud Firestore.

Modell der anzuzeigenden Daten

Dies ist ein Modell der Daten, aus denen der Chat der Chat-App besteht.

Chat.java


public class Chat {
    private String mName;
    private String mMessage;
    private String mUid;
    private Date mTimestamp;

    public Chat() { } // Needed for Firebase

    public Chat(String name, String message, String uid) {
        mName = name;
        mMessage = message;
        mUid = uid;
    }

    public String getName() { return mName; }

    public void setName(String name) { mName = name; }

    public String getMessage() { return mMessage; }

    public void setMessage(String message) { mMessage = message; }

    public String getUid() { return mUid; }

    public void setUid(String uid) { mUid = uid; }

    @ServerTimestamp
    public Date getTimestamp() { return mTimestamp; }

    public void setTimestamp(Date timestamp) { mTimestamp = timestamp; }
}

Vorbereiten der Firebase-Benutzeroberfläche

Importieren Sie zunächst die Firebase-Benutzeroberfläche für Cloud Firestore. Hierfür verwenden Sie den Firestore Recycler Adapter.

app/build.gradle


implementation "com.firebaseui:firebase-ui-firestore:6.2.1"

Abfrage erstellen

Erstellen Sie eine Abfrage für die Sammlung "Chats".

MainActivity.java


Query query = FirebaseFirestore.getInstance()
        .collection("chats")
        .orderBy("timestamp")
        .limit(50); //Holen Sie sich die neuesten 50

Reihe von Abfragen

Ich werde die zuvor erstellte Abfrage eingeben. Fügen Sie in Chat.class Ihre eigene Modellklasse ein.

MainActivity.java


FirestoreRecyclerOptions<Chat> options = new FirestoreRecyclerOptions.Builder<Chat>()
        .setQuery(query, Chat.class)
        .build();

Mit dem obigen Code werden die von der Abfrage erhaltenen Daten automatisch in die "Chat-Klasse" eingefügt. Wenn Sie sie jedoch aus irgendeinem Grund selbst einfügen möchten, gehen Sie wie folgt vor.

MainActivity.java



FirestoreRecyclerOptions<Chat> options = new FirestoreRecyclerOptions.Builder<Chat>()
        .setQuery(query, new SnapshotParser<Chat>() {
        @Override
        public Chat parseSnapshot(@NonNull DocumentSnapshot snapshot) {
            /*Schreiben Sie den Vorgang, den Sie beim Erstellen eines Schnappschusses ausführen möchten*/
            name = snapshot.getString("mName");
            message = snapshot.getString("mMessage");
            uid = snapshot.getString("mUid");
            Chat chat = new Chat(name,message,uid);
            return chat;
       }
       })
      .build();

Erstellen eines ViewHolder

Erstellen Sie eine Klasse, die von RecyclerView.ViewHolder erbt.

ChatHolder.java


public class ChatHolder extends RecyclerView.ViewHolder {

    public TextView messsageText;
    public TextView nameText;

    public ChatHolder(View itemView) {
        super(itemView);
        messsageText = itemView.findViewById(R.id.message_text);
        nameText = itemView.findViewById(R.id.name_text);
    }
    
   public void setMessage(String message){
       messsageText.setText(message);
   }
   
   public void setName(String name){
       nameText.setText(name);
   }
}

Erstellen Sie einen Adapter

Adapter werden durch Erben des Firestore Recycler-Adapters erstellt.

MainActivity.java


FirestoreRecyclerAdapter adapter = new FirestoreRecyclerAdapter<Chat, ChatHolder>(options) {
    @Override
    public void onBindViewHolder(ChatHolder holder, int position, Chat model) 
    {
        //Ich werde ein Objekt der Chat-Klasse in ChatHolder einfügen
        holder.setMessage(model.getMessage());
        holder.setName(model.getName());
    }

    @Override
    public ChatHolder onCreateViewHolder(ViewGroup group, int i) {
        //Hier erstellen wir eine Instanz von ViewHolder
        View view = LayoutInflater.from(group.getContext())
                .inflate(R.layout.message, group, false);

        return new ChatHolder(view);
    }
};

[Nicht vergessen] Hörerregistrierung

Ohne Hörer geht es nicht. Ich war hier ein bisschen süchtig. .. ..

MainActivity.java


@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

das ist alles! Danke für deine harte Arbeit!

abschließend

Sie sollten in der Lage sein, damit zu gehen! Bitte lassen Sie mich wissen, wenn Sie Fehler oder Fragen haben! Lassen Sie uns unser Bestes für die Android-Entwicklung geben! Wenn Sie möchten, bitte LGTM.

Referenz

Recommended Posts

Firestore-Daten in RecyclerView [Java] anzeigen
Importieren Sie Excel-Daten mit Java 2
Importieren Sie Excel-Daten mit Java
Importieren Sie Excel-Daten mit Java 3
[Für Anfänger] Mindestbeispiel für die Anzeige von RecyclerView in Java
Erstellen Sie Binärdaten variabler Länge in Java
Nachrichtendialog mit Java anzeigen (persönliches Memo)
Partisierung in Java
Änderungen in Java 11
Janken in Java
Umfangsrate in Java
FizzBuzz in Java
So zeigen Sie eine Webseite in Java an
Text als ASCII-Grafik in Java anzeigen (jfiglet)
Anzeigen von GIS-Daten in Elastic Search in QGIS über GeoServer
Organisiertes Memo im Kopf (Java - Datentyp)
Zeigen Sie "Hello World" im Browser mit Java an
Zeigen Sie "Hello World" im Browser mit Java an
Stellen Sie mit vim die Popup-Anzeige für die Java-Sprache ein.
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
Janken App in Java
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Kommentare in der Java-Quelle
Vektorisieren und bildgeben Sie handgeschriebene numerische MNIST-Bilddaten mit Java
[Java] Datentyp ①-Basistyp
Azure funktioniert in Java
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
So erstellen Sie einen Daten-URI (base64) in Java
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
[Java] Hauptdatentypen
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Java-Grunddatentypen
Java-Codebeispiel zum Erfassen und Anzeigen von DBLINK-Quell- und Zieldaten in Oracle Database mithilfe von DBLINK
Erstellen wir eine Taschenrechner-App mit Java ~ Zeigen Sie das Anwendungsfenster an
Holen Sie sich Wettervorhersagen von Watson Weather Company Data mit einfachem Java