Я хочу получить данные в коллекции заказов только для коллекции заказов fruit_ID
blockquote>Хорошо, вы хотите получить fruit_ID?
равняется идентификатору документа коллекции Продавцов / Фруктов и добавляется в представление переработчика
blockquote>, и вы хотите получить fruit_ID, равный Продавцам / Фруктам? [1136 ]
как
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
(){ @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 contentList adapter.notifyDataSetChanged(); // before of course, you add this in onCreate adapterOrders = new YourAdapterOrders(contentListOrders); contentListSellers.add(contents); //example: List contentList adapter.notifyDataSetChanged(); // before of course, you add this in onCreate adapterSellers = new YourAdapterSellers(contentListSellers); } } } }); убедитесь, что ваш класс контента расширяет идентификаторы
[ 111]и создайте OrdersId.class
public class OrdersId{ @Exclude public String OrdersId; public
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
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 (){ @Override public void onComplete(@NonNull Task task){ if (!task.getResult().exists()) { /* STORE NEW VALUE */ Map 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(); } } }); } }); }
Я не могу действительно предложить Вам, библиотека и мое предположение нет того, который существует там. Но я потратил соглашение времени, бездельничая с .sln файлами в сценариях редактирования пакета, и я нашел, что Powershell очень полезный инструмент для этой задачи..SLN формат довольно прост и может быть почти полностью проанализирован с несколькими быстрыми и грязными выражениями. Например,
Включенные файлы Проекта.
gc ConsoleApplication30.sln |
? { $_ -match "^Project" } |
%{ $_ -match ".*=(.*)$" | out-null ; $matches[1] } |
%{ $_.Split(",")[1].Trim().Trim('"') }
Это не всегда симпатично, но это - эффективный способ сделать пакетную обработку.