질문:
addSnapshotListener를 사용하고 populateViewHolder에서 제거하는 방법 FirebaseFirestore 쿼리를 사용하여 RecyclerView 항목의 메소드를 처리합니까?
FirebaseUI-Android 라이브러리 고려 사항:
FirebaseUI-Android 라이브러리의 FirebaseRecyclerAdapter는 RecyclerView에 대한 데이터 변경 알림을 처리합니다. 그러나 이는 뷰 홀더를 채우기 위한 addSnapshotListener 사용을 지원하지 않습니다.
EventListener 및 전역 변수 사용:
populateViewHolder에서 addSnapshotListener를 사용하려면 다음 단계를 따르세요.
전역 EventListener
<code class="java">EventListener<DocumentSnapshot> eventListener;</code>
리스너를 초기화하고 populateViewHolder에 추가합니다:
<code class="java">eventListener = new EventListener<DocumentSnapshot>() { @Override public void onEvent(DocumentSnapshot snapshot, FirebaseFirestoreException e) { if (e != null) { Log.w(TAG, "Listen failed.", e); return; } if (snapshot != null && snapshot.exists()) { // Do what you need to do } } }; if (listenerRegistration == null) { listenerRegistration = yourRef.addSnapshotListener(eventListener); }</code>
onStop()에서 리스너 제거:
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
onStart()에 리스너를 다시 추가하세요:
<code class="java">@Override protected void onStart() { super.onStart(); if (listenerRegistration == null) { listenerRegistration = yourRef.addSnapshotListener(eventListener); } }</code>
대체 옵션:
위 내용은 FirebaseFirestore 쿼리와 함께 RecyclerView 항목의 `populateViewHolder` 메서드에서 `addSnapshotListener` 및 `remove`를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!