如何遍历购物车中的物品,2)将每个物品添加到新位置,3)从旧位置删除物品

时间:2019-05-27 06:22:14

标签: android firebase firebaseui

My Cart and the Button My database正在使用Recycler firestore Adapter显示项目。我希望将recyclerview视图中的项目添加到另一个数据库中,并通过单击按钮清除初始数据库。我尝试了此操作,但遇到了无法将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 :(得分:0)

Query.get() method返回一个Task<QuerySnapshot>。由于您在代码中声明了Task<List>,因此会导致错误:com.google.firebase.firestore.QuerySnapshot cannot be cast to java.util.List

请仔细阅读reading multiple documents from a collection上的文档,因为其中包含您需要的精确代码段。


尽管您要从一个集合中获取整个集合还是单个文档,但我还是不确定。您可以像这样初始化query

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

据我所知,它指向"/uidOfUser/cart"的路径,该路径指向以当前用户命名的集合中的cart document 。如果确实是您的数据库结构,则需要遵循getting a single document上的文档中的示例,该示例将返回Task<DocumentSnapshot>