2 回答

TA貢獻1772條經驗 獲得超5個贊
要解決這個問題,請使用以下方法來檢查用戶是否看過一本書:
private void checkBookTitle(String bookTitle) {
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("Users").child(uid).child("books_viewed");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getValue().equals(bookTitle)) {
Log.d(TAG, "User has viewed this book");
} else {
Log.d(TAG, "User has not viewed this book");
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(valueEventListener);
}

TA貢獻1862條經驗 獲得超7個贊
首先,books_viewed變成一個數組。閱讀本文以了解Firebase 實時數據庫中的數組
現在它是一個數組,你可以ArrayList<String>在你的應用程序中獲取它。
public class User {
public ArrayList<String> booksViewed;
... // Other variables
}
然后只需使用該contains功能檢查您需要查找的書是否在該列表中
DatabaseReference userRef = FirebaseDatabase.getInstance().getReference().child("Users").child("<UserID>")
userRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
String bookTitleYouAreChecking = "Twilight"
if (user.booksViewed.contains(bookTitleYouAreChecking)) {
// User has viewed
} else {
// User has not viewed
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// ...
}
})
添加回答
舉報