>  기사  >  Java  >  FirebaseUI-Android를 사용하여 RecyclerView 항목 ViewHolders에서 이벤트 리스너를 관리하는 방법은 무엇입니까?

FirebaseUI-Android를 사용하여 RecyclerView 항목 ViewHolders에서 이벤트 리스너를 관리하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-26 15:25:03521검색

How to Manage Event Listeners in RecyclerView Item ViewHolders with FirebaseUI-Android?

FirebaseUI-Android 라이브러리를 사용하여 RecyclerView 항목 ViewHolder에서 이벤트 리스너를 추가 및 제거하는 방법

FirebaseUI-Android 라이브러리는 Firebase 표시 작업을 단순화합니다. RecyclerView의 데이터. 그러나 참조 필드가 포함된 문서로 작업할 때는 addSnapshotListener를 사용하여 참조된 데이터를 검색해야 합니다.

이 기사에서는 addSnapshotListener를 사용하고 필요하지 않을 때 제거하는 방법을 안내합니다. RecyclerView 어댑터의 populateViewHolder 메서드.

populateViewHolder 메서드

populateViewHolder 메서드는 Firebase 스냅샷의 데이터를 ViewHolder에 바인딩하는 곳입니다. 참조된 데이터를 검색하려면 다음 접근 방식을 사용하십시오.

<code class="java">@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);
    // Add a listener to the document reference
    EventListener<DocumentSnapshot> eventListener = 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");
            }
        }
    };
    docRef.addSnapshotListener(eventListener);
}</code>

이벤트 리스너 분리

데이터가 더 이상 필요하지 않을 때 리스너를 분리하는 것이 중요합니다. 불필요한 대역폭 소비를 피하십시오. 이렇게 하려면 전역 ListenerRegistration 변수를 선언하고 다음과 같이 필요할 때만 리스너를 추가하세요.

<code class="java">// Inside your RecyclerView adapter
private ListenerRegistration listenerRegistration;

if (listenerRegistration == null) {
    listenerRegistration = yourRef.addSnapshotListener(eventListener);
}</code>

그리고 onStop() 메서드에서 리스너를 제거하세요.

<code class="java">@Override
protected void onStop() {
    if (listenerRegistration != null) {
        listenerRegistration.remove();
    }
}</code>

추가 고려 사항

  • 문서를 한 번만 읽어야 하는 경우 addSnapshotListener 대신 get() 메서드를 사용하는 것이 좋습니다.
  • 활동을 다음과 같이 전달할 수도 있습니다. addSnapshotListener의 첫 번째 인수는 활동이 중지될 때 Firestore가 자동으로 리스너를 정리하도록 합니다.

위 내용은 FirebaseUI-Android를 사용하여 RecyclerView 항목 ViewHolders에서 이벤트 리스너를 관리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.