我正在开发一个论坛应用程序,我必须在其中编写相同的代码,例如在很多地方向 Firebase 引用添加监听器、将数据绑定(bind)到 View 等。因此,我编写了一个 Utils 类,其中包含所有此类重复代码的方法。
public class UIUtils {
public static FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
public static DatabaseReference mReference = mDatabase.getReference();
public static class DataBindingUtils {
public static void bindDataToFollowButton(final RecyclerViewHolder.UnansweredRecyclerViewHolder
holder, String questionKey, final String userName) {
mReference.child("Posts").
child(questionKey).child("Followers")
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.exists()) {
if (dataSnapshot.getValue().equals(userName)) {
holder.FollowButton.setChecked(true);
}
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Log.v("onChildRemoved", dataSnapshot.toString());
}
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
如何删除上述方法中的此类监听器?
最佳答案
这样做:
定义监听器
private ChildEventListener mListener = new ChildEventListener() {
//Your Implementation of Listener
}
将监听器添加到 DatabaseReference:
mReference.addChildEventListener(mListener);
从 DatabaseReference 中删除监听器:
mReference.removeEventListener(mListener);
关于java - 如果我使用单独的 utils 类的静态方法添加 Firebase 事件监听器,如何删除它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005367/