Wie setze ich addSnapshotListener und entferne in populateViewHolder in RecyclerView Item?

Lesezeit: 2 Minuten

Wie setze ich addSnapshotListener und entferne in populateViewHolder in RecyclerView
Pankaj Savaliya

habe ich umgesetzt RecyclerView mit FirebaseUI-Android-Bibliothek.

Mein RecyclerView Echtzeitdaten ändern sich gut, sobald ich das benutze FirebaseRecyclerAdapter

In Collection hat dieses Datendokument den Feldtyp als Boolesch, Ganzzahl, Referenz.

ich diese Referenz verwenden möchten, um Daten einzulesen populateViewHolder mit addSnapshotListener.

Hilf mir! Hier ist mein Code:

         FirebaseRecyclerAdapter<Conv, ConvViewHolder> firebaseConvAdapter = new FirebaseRecyclerAdapter<Conv, ConvViewHolder>(
            Conv.class,
            R.layout.users_single_layout,
            ConvViewHolder.class,
            conversationQuery
    ) {
        @Override
        protected void populateViewHolder(final ConvViewHolder convViewHolder, final Conv conv, int i) {

            final String list_user_id = getRef(i).getKey();

            final DocumentReference docRef = db.collection("cities").document(list_user_id);
            docRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
                @Override
                public void onEvent(@Nullable DocumentSnapshot snapshot,
                                    @Nullable FirebaseFirestoreException e) {
                    if (e != null) {
                        Log.w(TAG, "Listen failed.", e);
                        return;
                    }

                    if (snapshot != null && snapshot.exists()) {
                        Log.d(TAG, "Current data: " + snapshot.getData());
                    } else {
                        Log.d(TAG, "Current data: null");
                    }
                }
            });
        }
    };

    mConvList.setAdapter(firebaseConvAdapter);

Firebase sagt, wenn Sie addSnapshotListener hinzufügen, müssen Sie es entfernen, sobald dies nicht erforderlich ist Trennen Sie einen Zuhörer

Wenn Sie nicht mehr daran interessiert sind, Ihre Daten abzuhören, müssen Sie Ihren Listener trennen, damit Ihre Ereignisrückrufe nicht mehr aufgerufen werden. Dadurch kann der Client die Verwendung von Bandbreite zum Empfangen von Updates beenden. Sie können die Abmeldefunktion auf verwenden onSnapshot() um das Abhören von Updates zu beenden.

  • Ich möchte in Item of Recycler adapter.and viel Bandbreite von Firebase verwenden, während viele Daten im Adapter mit Listener sind.

    – Pankaj Savaliya

    10. Februar 18 um 12:15 Uhr


  • Wenn Sie den Hörer entfernen, gibt es keine Probleme mehr. Hast du meinen Code ausprobiert?

    – Alex Mamo

    10. Februar 18 um 12:29 Uhr

  • Ja, ich habe es bereits versucht, aber es ist der beste Weg oder nicht? weil Google sagt, dass eine starke Nutzung des Listeners zu einer starken Nutzung der Bandbreite führt, sobald viele Daten vorhanden sind.

    – Pankaj Savaliya

    12. Februar 18 um 5:16 Uhr

  • Ja, das ist definitiv der beste Weg! Und ja, das ist richtig, der Verlust des Hörers kann zu einer starken Nutzung der Bandbreite führen, aber nur wenn du sie nicht entfernst. Wenn Sie also den Code in meiner Antwort verwenden, wird Ihr Problem gelöst. Glauben Sie, dass Ihnen meine Antwort geholfen hat?

    – Alex Mamo

    12. Februar 18 um 5:25 Uhr

  • Ja. Ich mache mir nur Sorgen um die Bandbreite, deshalb frage ich. danke für deine tolle hilfe. 🙂

    – Pankaj Savaliya

    12. Februar 18 um 13:17 Uhr


.

710360cookie-checkWie setze ich addSnapshotListener und entferne in populateViewHolder in RecyclerView Item?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy