下面列出了io.reactivex.functions.Cancellable#com.google.firebase.database.ValueEventListener 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void updateUsers(){
databaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
users.clear(); // might need to remove
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
DataBaseUser usr = postSnapshot.getValue(DataBaseUser.class);
users.add(usr);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void updateServices(){
databaseServices.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
services.clear(); // might need to remove
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
DataBaseService service = postSnapshot.getValue(DataBaseService.class);
services.add(service);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
/**
* Updates bookings reference
*/
public void updateBookings(){
bookings = new ArrayList<>();
databaseBookings.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
bookings.clear();
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
Booking booking = postSnapshot.getValue(Booking.class);
bookings.add(booking);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void updateUsers(){
databaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
users.clear();
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
DataBaseUser usr = postSnapshot.getValue(DataBaseUser.class);
users.add(usr);
usernamesUsed.add(usr.getUsername());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void updateServices(){
databaseServices.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
services.clear(); // might need to remove
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
DataBaseService service = postSnapshot.getValue(DataBaseService.class);
services.add(service);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void addValueToReadyListener(final Query firebase, final GeoHashQuery query) {
firebase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
synchronized (GeoQuery.this) {
GeoQuery.this.outstandingQueries.remove(query);
GeoQuery.this.checkAndFireReady();
}
}
@Override
public void onCancelled(@NonNull final DatabaseError databaseError) {
synchronized (GeoQuery.this) {
for (final GeoQueryDataEventListener listener : GeoQuery.this.eventListeners) {
GeoQuery.this.geoFire.raiseEvent(new Runnable() {
@Override
public void run() {
listener.onGeoQueryError(databaseError);
}
});
}
}
}
});
}
private void listenForData() {
DatabaseReference receiveDB = FirebaseDatabase.getInstance().getReference().child("users")
.child(FirebaseAuth.getInstance().getUid()).child("received");
receiveDB.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot snap : dataSnapshot.getChildren()) {
getUserInfo(snap.getKey());
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void getUserInfo(String key) {
DatabaseReference userDB = FirebaseDatabase.getInstance().getReference().child("users").child(key);
userDB.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
String username = dataSnapshot.child("username").getValue().toString();
String profileImageUrl = dataSnapshot.child("profileImageUrl").getValue().toString();
String uid = dataSnapshot.getRef().getKey();
StoryObject obj = new StoryObject(username, uid, profileImageUrl,"chat");
if (!results.contains(obj)) {
results.add(obj);
adapter.notifyDataSetChanged();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public void onLoadFinished(Loader<Cursor> loader, final Cursor data) {
adapter.swapCursor(data);
if(data.getCount() == 0){
Query hekkQuery = mDatabaseReference;
hekkQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(doctorPreference.getWantToRestoreData(getActivity())){
if(dataSnapshot.getChildrenCount() == 0){
}else {
showAlertToRestoreData(dataSnapshot.getChildrenCount());
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
public static void markAsRead(String notifId) {
String rootNode = HapRampMain.getFp();
String username = HaprampPreferenceManager.getInstance().getCurrentSteemUsername();
if (username.length() > 0) {
final DatabaseReference notificationRef = FirebaseDatabase.getInstance()
.getReference()
.child(rootNode)
.child(NODE_NOTIFICATIONS)
.child(getFormattedUserName(username))
.child(notifId);
notificationRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
notificationRef.child(NODE_IS_READ).setValue(true);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
public void getFollowingPosts(String userId, OnDataChangedListener<FollowingPost> listener) {
databaseHelper
.getDatabaseReference()
.child(DatabaseHelper.FOLLOWINGS_POSTS_DB_KEY)
.child(userId)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<FollowingPost> list = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
FollowingPost followingPost = snapshot.getValue(FollowingPost.class);
list.add(followingPost);
}
Collections.reverse(list);
listener.onListChanged(list);
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logDebug(TAG, "getFollowingPosts, onCancelled");
}
});
}
public void getFollowersList(String targetUserId, OnDataChangedListener<String> onDataChangedListener) {
getFollowersRef(targetUserId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> list = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Follower follower = snapshot.getValue(Follower.class);
if (follower != null) {
String profileId = follower.getProfileId();
list.add(profileId);
}
}
onDataChangedListener.onListChanged(list);
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logDebug(TAG, "getFollowersList, onCancelled");
}
});
}
public void getFollowingsList(String targetUserId, OnDataChangedListener<String> onDataChangedListener) {
getFollowingsRef(targetUserId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> list = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Following following = snapshot.getValue(Following.class);
if (following != null) {
String profileId = following.getProfileId();
list.add(profileId);
}
}
onDataChangedListener.onListChanged(list);
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logDebug(TAG, "getFollowingsList, onCancelled");
}
});
}
public void getPostListByUser(final OnDataChangedListener<Post> onDataChangedListener, String userId) {
DatabaseReference databaseReference = databaseHelper.getDatabaseReference().child(DatabaseHelper.POSTS_DB_KEY);
Query postsQuery;
postsQuery = databaseReference.orderByChild("authorId").equalTo(userId);
postsQuery.keepSynced(true);
postsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
PostListResult result = parsePostList((Map<String, Object>) dataSnapshot.getValue());
onDataChangedListener.onListChanged(result.getPosts());
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logError(TAG, "getPostListByUser(), onCancelled", new Exception(databaseError.getMessage()));
}
});
}
public void getSinglePost(final String id, final OnPostChangedListener listener) {
DatabaseReference databaseReference = databaseHelper.getDatabaseReference().child(DatabaseHelper.POSTS_DB_KEY).child(id);
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() != null && dataSnapshot.exists()) {
if (isPostValid((Map<String, Object>) dataSnapshot.getValue())) {
Post post = dataSnapshot.getValue(Post.class);
post.setId(id);
listener.onObjectChanged(post);
} else {
listener.onError(String.format(context.getString(R.string.error_general_post), id));
}
} else {
listener.onError(context.getString(R.string.message_post_was_removed));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logError(TAG, "getSinglePost(), onCancelled", new Exception(databaseError.getMessage()));
}
});
}
public ValueEventListener hasCurrentUserLike(String postId, String userId, final OnObjectExistListener<Like> onObjectExistListener) {
DatabaseReference databaseReference = databaseHelper
.getDatabaseReference()
.child(DatabaseHelper.POST_LIKES_DB_KEY)
.child(postId)
.child(userId);
ValueEventListener valueEventListener = databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
onObjectExistListener.onDataChanged(dataSnapshot.exists());
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logError(TAG, "hasCurrentUserLike(), onCancelled", new Exception(databaseError.getMessage()));
}
});
databaseHelper.addActiveListener(valueEventListener, databaseReference);
return valueEventListener;
}
public void hasCurrentUserLikeSingleValue(String postId, String userId, final OnObjectExistListener<Like> onObjectExistListener) {
DatabaseReference databaseReference = databaseHelper
.getDatabaseReference()
.child(DatabaseHelper.POST_LIKES_DB_KEY)
.child(postId)
.child(userId);
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
onObjectExistListener.onDataChanged(dataSnapshot.exists());
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logError(TAG, "hasCurrentUserLikeSingleValue(), onCancelled", new Exception(databaseError.getMessage()));
}
});
}
public ValueEventListener searchPostsByTitle(String searchText, OnDataChangedListener<Post> onDataChangedListener) {
DatabaseReference reference = databaseHelper.getDatabaseReference().child(DatabaseHelper.POSTS_DB_KEY);
ValueEventListener valueEventListener = getSearchQuery(reference,"title", searchText).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
PostListResult result = parsePostList((Map<String, Object>) dataSnapshot.getValue());
onDataChangedListener.onListChanged(result.getPosts());
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logError(TAG, "searchPostsByTitle(), onCancelled", new Exception(databaseError.getMessage()));
}
});
databaseHelper.addActiveListener(valueEventListener, reference);
return valueEventListener;
}
public ValueEventListener filterPostsByLikes(int limit, OnDataChangedListener<Post> onDataChangedListener) {
DatabaseReference reference = databaseHelper.getDatabaseReference().child(DatabaseHelper.POSTS_DB_KEY);
ValueEventListener valueEventListener = getFilteredQuery(reference,"likesCount", limit).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
PostListResult result = parsePostList((Map<String, Object>) dataSnapshot.getValue());
onDataChangedListener.onListChanged(result.getPosts());
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logError(TAG, "filterPostsByLikes(), onCancelled", new Exception(databaseError.getMessage()));
}
});
databaseHelper.addActiveListener(valueEventListener, reference);
return valueEventListener;
}
public ValueEventListener getProfile(String id, final OnObjectChangedListener<Profile> listener) {
DatabaseReference databaseReference = databaseHelper.getDatabaseReference().child(DatabaseHelper.PROFILES_DB_KEY).child(id);
ValueEventListener valueEventListener = databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Profile profile = dataSnapshot.getValue(Profile.class);
listener.onObjectChanged(profile);
}
@Override
public void onCancelled(DatabaseError databaseError) {
listener.onError(databaseError.getMessage());
LogUtil.logError(TAG, "getProfile(), onCancelled", new Exception(databaseError.getMessage()));
}
});
databaseHelper.addActiveListener(valueEventListener, databaseReference);
return valueEventListener;
}
public ValueEventListener searchProfiles(String searchText, OnDataChangedListener<Profile> onDataChangedListener) {
DatabaseReference reference = databaseHelper.getDatabaseReference().child(DatabaseHelper.PROFILES_DB_KEY);
ValueEventListener valueEventListener = getSearchQuery(reference, "username", searchText).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<Profile> list = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Profile profile = snapshot.getValue(Profile.class);
list.add(profile);
}
onDataChangedListener.onListChanged(list);
}
@Override
public void onCancelled(DatabaseError databaseError) {
LogUtil.logError(TAG, "searchProfiles(), onCancelled", new Exception(databaseError.getMessage()));
}
});
databaseHelper.addActiveListener(valueEventListener, reference);
return valueEventListener;
}
private void getHistory(){
riderHistory.child(Common.userID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot: dataSnapshot.getChildren()){
History history = postSnapshot.getValue(History.class);
listData.add(history);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void registerByGoogleAccount(final GoogleSignInAccount account){
final User user=new User();
users.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User post = dataSnapshot.child(account.getId()).getValue(User.class);
if(post==null) showRegisterPhone(user, account);
else loginSuccess();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void loadUser(){
FirebaseDatabase.getInstance().getReference(Common.user_rider_tbl)
.child(Common.userID)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Common.currentUser=dataSnapshot.getValue(User.class);
initDrawer();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void loadDriverInfo(String driverID) {
FirebaseDatabase.getInstance().getReference(Common.user_driver_tbl)
.child(driverID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user=dataSnapshot.getValue(User.class);
if(user.getAvatarUrl()!=null &&
!TextUtils.isEmpty(user.getAvatarUrl()))
Picasso.get().load(user.getAvatarUrl()).into(imgAvatar);
tvName.setText(user.getName());
tvPhone.setText(user.getPhone());
tvRate.setText(user.getRates());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void registerByGoogleAccount(final GoogleSignInAccount account){
final User user=new User();
users.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User post = dataSnapshot.child(account.getId()).getValue(User.class);
if(post==null) showRegisterPhone(user, account);
else loginSuccess();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void getUserName(final String UID) {
final StringBuffer buffer = new StringBuffer("");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
if (snapshot.getKey().equals("name")) {
buffer.append(snapshot.getValue());
}
}
mFullName = buffer.toString();
updateProfile();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
mDatabaseReference.child("users").child(UID).addListenerForSingleValueEvent(eventListener);
}
public FirebaseQueryLiveDataElement(Class<T> genericTypeClass, Query query) {
setValue(null);
listener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
T item = dataSnapshot.getValue(genericTypeClass);
setValue(new FirebaseElement<>(item));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
setValue(new FirebaseElement<>(databaseError));
removeListener();
setListener();
}
};
this.query = query;
}
@Test
public void geoFireSetsLocations() throws InterruptedException, TimeoutException {
GeoFire geoFire = geoFireTestingRule.newTestGeoFire();
geoFireTestingRule.setLocation(geoFire, "loc1", 0.1, 0.1);
geoFireTestingRule.setLocation(geoFire, "loc2", 50.1, 50.1);
geoFireTestingRule.setLocation(geoFire, "loc3", -89.1, -89.1, true);
final SimpleFuture<Object> future = new SimpleFuture<>();
geoFire.getDatabaseReference().addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
future.put(dataSnapshot);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
future.put(databaseError);
}
});
Map<String, Object> expected = new HashMap<>();
expected.put("loc1", new HashMap<String, Object>() {{
put("l", Arrays.asList(0.1, 0.1));
put("g", "s000d60yd1");
}});
expected.put("loc2", new HashMap<String, Object>() {{
put("l", Arrays.asList(50.1, 50.1));
put("g", "v0gth03tws");
}});
expected.put("loc3", new HashMap<String, Object>() {{
put("l", Arrays.asList(-89.1, -89.1));
put("g", "400th7z6gs");
}});
Object result = future.get(geoFireTestingRule.timeout, TimeUnit.SECONDS);
Assert.assertEquals(expected, ((DataSnapshot)result).getValue());
}
@Override
public void getLessonCompleted() {
if (Injection.providesAuthHelper().getAuthInstance().getCurrentUser() != null) {
String userID = Injection.providesAuthHelper().getAuthInstance().getCurrentUser().getUid();
String language = Hawk.get("currentLanguage");
myRef.child("user")
.child(userID)
.child("course")
.child(language)
.child("lessons")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Hawk.put(ds.getKey().toString(), ds.getValue());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}