> Java > java지도 시간 > FirebaseUI 및 addSnapshotListener를 사용하여 RecyclerView 어댑터에서 문서 참조에 액세스하고 업데이트하는 방법은 무엇입니까?

FirebaseUI 및 addSnapshotListener를 사용하여 RecyclerView 어댑터에서 문서 참조에 액세스하고 업데이트하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-26 09:31:30
원래의
886명이 탐색했습니다.

How to Access and Update Document References in a RecyclerView Adapter with FirebaseUI and addSnapshotListener?

addSnapshotListener를 사용하여 RecyclerView 어댑터에서 문서 참조에 액세스

FirebaseUI-Android는 FirebaseRecyclerAdapter를 제공하여 RecyclerView에 실시간 데이터를 효율적으로 표시합니다. 그러나 데이터 객체 내의 문서 참조를 처리할 때 데이터를 검색하기 위해 addSnapshotListener를 사용해야 할 수도 있습니다.

RecyclerView ViewHolder를 문서 참조로 채우려면:

  1. EventListener 생성:

    <code class="java">EventListener<DocumentSnapshot> eventListener = new EventListener<DocumentSnapshot>() {
     @Override
     public void onEvent(DocumentSnapshot snapshot, FirebaseFirestoreException e) {
         if (snapshot != null && snapshot.exists()) {
             // Retrieve and display the data from the document
         }
     }
    };</code>
    로그인 후 복사
  2. 클래스에 전역 ListenerRegistration 변수를 추가합니다.
  3. populateViewHolder 내의 문서 참조에 리스너를 추가합니다.

    <code class="java">if (listenerRegistration == null) {
     listenerRegistration = docRef.addSnapshotListener(eventListener);
    }</code>
    로그인 후 복사

리스너 제거

메모리 누수 및 과도한 네트워크 사용을 방지하려면 더 이상 필요하지 않을 때 리스너를 제거하세요.

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

수명 주기 관리

적절한 수명 주기 관리를 보장하려면 onStart()에 리스너를 추가하고 onStop()에서 제거하는 것을 잊지 마세요.

대안

실시간 데이터 업데이트가 필요하지 않은 경우 참조에 대해 get() 호출을 사용하여 문서를 한 번 읽어보세요.

자동 리스너 제거

보다 우아한 솔루션을 위해 addSnapshotListener()의 첫 번째 인수로 액티비티를 전달하세요.

<code class="java">ListenerRegistration lg = yourDocumentRef
            .addSnapshotListener(YourActivity.this, eventListener);</code>
로그인 후 복사

위 내용은 FirebaseUI 및 addSnapshotListener를 사용하여 RecyclerView 어댑터에서 문서 참조에 액세스하고 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿