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