Слово! Я должен держать это вне моего onBindViewHolder. Спасибо, я сделаю это и дам уточнение номеров использования для уточнения!
я есть RecyclerView, который заполняется сообщениями, хранящимися в базе данных Firestore. Каждое сообщение записывается в виде документа с уникальным идентификатором postID, в котором хранится опубликованное сообщение, отметка времени и счетчик похожих.
//mUploads is defined as private List<Upload> mUploads;
//Upload object stores post message, timestamp and likes
mUploads = new ArrayList<>();
mFireStoreOrdered = mFireStoreInst.collection("posts").orderBy("time");
mFireStoreOrdered
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
pub,lic void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot doc : task.getResult()) {
//For each document get the ID
String postID = doc.getId();
// Upload object stores post message, timestamp and likes
Upload upload = doc.toObject(Upload.class).withId(postID);
mUploads.add(upload);
}
Collections.reverse(mUploads);
//Populate Recyclerview
mAdapter = new UploadAdapter(MainActivity.this, mUploads);
mContentView.setAdapter(mAdapter);
} else {
//...
}
}
});
Пытаясь реализовать функцию «Мне нравится» для этих постов, я достиг предела Firestore, который может обрабатывать только одно обновление документа в секунду.
чтениеэта статья убедил меня в использовании базы данных Firebase Realtime для хранения лайков с помощью транзакций вместо использованияраспределенные счетчики, Я не хочу отображать лайки в режиме реального времени, я только хочу использовать RTDB для обработки нескольких лайков / дислайков в секунду.
При дополнительном использовании Firebase RTDB для лайков я бы добавил данные в путь / posts / postID / likes.
Как я могу получить сообщения от Firestore и добавить соответствующие лайки из RTDB вmUploads
перед передачей его на адаптер. В частности, возможно ли гарантировать, что я установил правильное значение like для соответствующего поста, не запрашивая каждый postID.