Я хочу получить данные только для сбора заказов.
fruit_ID
Хорошо, вы хотите получить fruit_ID?
равняется идентификатору документа продавца / Фруктовой коллекции и добавляется в переработчик
а вы хотите получить fruit_ID, который равен продавцам / фруктам?
как if (fruit_ID.equals(sellerFruits_ID) {// get fruit_ID}
Я постараюсь ответить на него.
ПРОБЛЕМА
1. Вы, как продавец, имеете свою seller uid
в своей коллекции Sellers
и хотите получить V4x1Dh..
2. У вас есть buyer uid
в вашей коллекции Orders
и вы хотите получить 83Fmf..
3. Вы хотите получить Банан в Продавцах / Фруктах, который Банан как id.
Наконец, вы хотите загрузить данные Sellers/Fruits
в recyclerView
, потому что
вы хотите получить данные только для сбора заказов
fruit_ID
ОТВЕТ
Ответ номер один: Пожалуйста, найдите Продавцов ids
и получите V4x1Dh
на основе ViewHolder position
, что я объясню позже.
Ответ номер два: Пожалуйста, получите Заказы ids
и получите 83Fmf
на основе ViewHolder position
, что я объясню позже.
Ответ номер два: Пожалуйста, возьмите фрукты продавцов ids
скажем sellerFruit_ID
и получите Banana
на основе ViewHolder position
, что я объясню позже. ПРИМЕЧАНИЕ: Поскольку в документе есть банан, это будет ID.
ОПИСАНИЕ:
Извлечение продавцов ids
и получение V4x1Dh
:
firebaseFirestore
.collection("Sellers")
.addSnapshotListener(new EventListener<QuerySnapshot>(){
@Override
public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e){
for (DocumentChange doc : documentSnapshots.getDocumentChanges()){
if (doc.getType() == DocumentChange.Type.ADDED){
// RETRIEVING Orders id
String orders_ID = doc.getDocument().getId();
YourContentOrdersHere contentOrders = doc.getDocument().toObject(YourContentOrdersHere.class).withId(orders_ID);
// RETRIEVING Sellers id
String sellers_ID = doc.getDocument().getId();
YourContentSellersHere contentSellers = doc.getDocument().toObject(YourContentSellersHere.class).withId(sellers_ID);
contentListOrders.add(contentOrders); //example: List<YourContentOrdersHere> contentList
adapter.notifyDataSetChanged(); // before of course, you add this in onCreate adapterOrders = new YourAdapterOrders(contentListOrders);
contentListSellers.add(contents); //example: List<YourContentSellersHere> contentList
adapter.notifyDataSetChanged(); // before of course, you add this in onCreate adapterSellers = new YourAdapterSellers(contentListSellers);
}
}
}
});
убедитесь, что ваш класс контента расширяет идентификаторы
public class YourContentOrdersHere extends OrdersId {
// make your constructor here of course
// make your getter to get id
}
и сделать OrdersId.class
public class OrdersId{
@Exclude
public String OrdersId;
public <T extends OrdersId> T withId(@NonNull final String id) {
this.OrdersId = id;
return (T) this;
}
}
и, наконец, из класса вашего адаптера, получающего OrdersId. Как пример:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// GET YOUR `Sellers` id based position and getSellerId() from getter of your content class
String sellers_ID = contentListSeller.get(position).getSellerId(); // don't forget List<YourContentSellers> contentList = new ArrayList<>();
firebaseFirestore
.collection("Sellers")
.document(sellers_ID)
.collection("Fruits")
.document("Banana")
// STORE 'LIKE TAP' USING LIKE BUTTON
holder.likeHome.seOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
/* RETRIEVING VALUE UNDER currentUserId */
firebaseFirestore.collection("Posts/" + postId + "/Likes").document(currentUserId).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>(){
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task){
if (!task.getResult().exists()) {
/* STORE NEW VALUE */
Map<String, Object> likesMap = new HashMap<>();
likesMap.put("timestamp", FieldValue.serverTimestamp);
firebaseFirestore.collection("Posts/" + postId + "/Likes").document(currentUserId).set(likesMap);
} else {
// retrieve like timestamp
String whenToLike = task.getResult().getString("timestamp");
holder.setWhenToLike(whenToLike);
/* DELETE VALUE */
firebaseFirestore.collection("Posts/" + postId + "/Likes").document(currentUserId).delete();
}
}
});
}
});
}