Как я могу зациклить элементы в корзине, 2) Добавить каждый элемент в новое место, 3) Удалить элемент из старого места - PullRequest
0 голосов
/ 27 мая 2019

My Cart and the ButtonMy database Элементы отображаются с помощью адаптера пожарного магазина Recycler. Я хочу, чтобы элементы в представлении переработчика добавлялись в другую базу данных, а исходная база данных очищалась одним нажатием кнопки. Я пробовал это, но я получил ошибку, что com.google.firebase.firestore.QuerySnapshot не может быть приведен к java.util.List

public void placeOrder() {

    FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    Query query = rootRef
            .collection(String.valueOf(new 
  StringBuffer("/").append(user.getUid()).append("cart")));

    Task task = query.get();

    task.addOnSuccessListener(new OnSuccessListener<List<Object>>() {

        @Override
        public void onSuccess(List<Object> list) {


            CollectionReference notebookRef;
            mAuth = FirebaseAuth.getInstance();
            user = mAuth.getCurrentUser();
            if (user != null) {
                notebookRef = db.collection(String.valueOf(new 
        StringBuffer("/").append(user.getUid()).append("order")));



                String name = String.valueOf(list.get(1));
                String delivery = String.valueOf(list.get(2));
                String amount = String.valueOf(list.get(3));

                OrderItem orderItem = new OrderItem(name, amount, 
                delivery);
                notebookRef.add(orderItem);
                Toast.makeText(context, "Items Added", 
                     Toast.LENGTH_SHORT).show();
            }
           }
        });
       }[![This is my Database][1]][1]

1 Ответ

0 голосов
/ 27 мая 2019

Метод Query.get() возвращает Task<QuerySnapshot>.Так как вы объявили Task<List> в своем коде, это приведет к ошибке, которую вы получите: com.google.firebase.firestore.QuerySnapshot cannot be cast to java.util.List.

Пожалуйста, изучите документацию по чтению нескольких документов из коллекции , поскольку она содержит необходимый фрагмент кода.


Одна вещь, я не полностьюхотя вы уверены, получаете ли вы всю коллекцию или один документ из коллекции.Вы инициализируете query следующим образом:

Query query = rootRef.collection(
  String.valueOf(new StringBuffer("/").append(user.getUid()).append("cart")));

Насколько я вижу, это ведет к пути "/uidOfUser/cart", который будет указывать на cart документ вКоллекция имени текущего пользователя.Если это действительно структура вашей базы данных, вам нужно следовать примеру из документации по , получив один документ , который возвращает Task<DocumentSnapshot>.

...