[英]Android Studio - listing reviews from Firebase
當談到 Android Studio 時,我還是個新手,但是我一直在看很多可以注冊用戶等的教程。但是我現在希望用戶能夠留下存儲在 Firebase 中的評論。 我創建了一個 RecyclerView,這樣我就可以查看所有用戶留下的評論,但是我遇到了一個問題,當我發表評論時,它會刪除 Firebase 中的當前評論,所以總是只有一個評論。 以下是我注冊評論到 Firebase 的代碼:
public void registerReview(){
String email = emailR.getText().toString().trim();
String message = messageR.getText().toString().trim();
Review review = new Review(email, message);
FirebaseDatabase.getInstance().getReference("Review")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(review).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(RegisterReview.this, "Thanks for your feedback!", Toast.LENGTH_LONG).show();
startActivity(new Intent(RegisterReview.this, MainMenu.class));
}
else{
Toast.makeText(RegisterReview.this, "Failed to Register", Toast.LENGTH_LONG).show();
}
}
});
我將如何更改這一點,以便在不刪除以前的情況下存儲每條評論? 這是由於.setValue 而發生的嗎?
似乎您每次都在參考 userId 存儲數據,這是它更新現有記錄的原因。
嘗試這個 -
String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
String uniqueID = UUID.randomUUID().toString();
Review review = new Review(userID ,email, message);
FirebaseDatabase.getInstance().getReference("Review")
.child(uniqueID)
.setValue(review).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(RegisterReview.this, "Thanks for your feedback!", Toast.LENGTH_LONG).show();
startActivity(new Intent(RegisterReview.this, MainMenu.class));
}
else{
Toast.makeText(RegisterReview.this, "Failed to Register", Toast.LENGTH_LONG).show();
}
}
});
並根據userId獲取記錄
當您使用時:
.setValue(review)
根據DocumentReference#set(Object data)方法的官方文檔:
覆蓋此 DocumentReference 引用的文檔。
這就是為什么如果您使用相同的引用,您將覆蓋數據。 如果您不希望這樣,那么您應該考慮使用DocumentReference#update(Map<String, Object> data) :
更新此 DocumentReference 引用的文檔中的字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.