Как добавить все элементы из Cloud Firestore, отображаемые с помощью Recycler Firestore Adapter, в другую базу данных одним нажатием кнопки - PullRequest
0 голосов
/ 25 мая 2019

This is how my cart looks like Я новичок, я пытаюсь воссоздать коммерческие приложения, и на следующем рисунке показаны элементы в корзине, ожидающие заказа. Я использую Cloud Firestore. Я хочу, чтобы пользователи нажимали кнопку размещения заказа, и все элементы добавлялись в другую базу данных, а корзина очищалась. Как я могу это сделать?

Это код в CartActivity

public class CartFragment extends Fragment {

 private RecyclerView MyRecycler;
 private Context context;
 private CartAdapter adapter;
 Button buttonorder;
 private FirebaseFirestore db = FirebaseFirestore.getInstance();
 private FirebaseAuth  mAuth = FirebaseAuth.getInstance();
 private FirebaseUser  user = mAuth.getCurrentUser();



@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable 
 ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.cartfragment_layout, container, 
   false);
    MyRecycler = v.findViewById(R.id.recycler_cart);
    buttonorder = v.findViewById(R.id.place_order_btn);
    setUpRecyclerView();

    buttonorder.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           // placeOrder();
        }
    });
    return v;
 }


 private void setUpRecyclerView() {
    CollectionReference notebookRef;
    mAuth = FirebaseAuth.getInstance();
    FirebaseUser user = mAuth.getCurrentUser();
    if (user != null) {
        notebookRef = db.collection(String.valueOf(new 
  StringBuffer(user.getUid()).append("cart")));
        Query query = notebookRef.orderBy("delivery", 
   Query.Direction.DESCENDING);

        FirestoreRecyclerOptions<CartModel> options = new 
   FirestoreRecyclerOptions.Builder<CartModel>()
                .setQuery(query, CartModel.class)
                .build();

        adapter = new CartAdapter(options, getActivity(), user);
        adapter.notifyDataSetChanged();
        MyRecycler.setHasFixedSize(true);
        MyRecycler.setLayoutManager(new LinearLayoutManager(context));
        MyRecycler.setAdapter(adapter);


        new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
                ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
            @Override
            public boolean onMove(RecyclerView recyclerView, 
            RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder 
            target) {
                return false;
            }

            @Override
            public void onSwiped(RecyclerView.ViewHolder viewHolder, int 
             direction) {
                adapter.deleteItem(viewHolder.getAdapterPosition());
            }
           }).attachToRecyclerView(MyRecycler);
          }
         }

 @Override
 public void onStart() {
    super.onStart();
    adapter.startListening();
 }

 @Override
 public void onStop() {
    super.onStop();
    adapter.stopListening();
  }


}

А это мой адаптер

public class CartAdapter extends FirestoreRecyclerAdapter<CartModel, 
CartAdapter.CartViewHolder> {
   Context context;
   FirebaseUser user;

public CartAdapter(@NonNull FirestoreRecyclerOptions<CartModel> options, 
    Context context, FirebaseUser user) {
    super(options);
    this.context = context;
    this.user = user;

}

@Override
protected void onBindViewHolder(@NonNull CartViewHolder holder, int 
   position, @NonNull CartModel model) {

    holder.name.setText(model.getItemName());
    holder.delivery.setText(model.getDelivery());
    holder.price.setText(model.getamount());
}


public void deleteItem(int position) {
    getSnapshots().getSnapshot(position).getReference().delete();

}


@NonNull
@Override
public CartViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int 
                      i) {
    View view;
    LayoutInflater mInflater = 
    LayoutInflater.from(viewGroup.getContext());
    view = mInflater.inflate(R.layout.activity_cart_adapter, viewGroup, 
        false);
    return new CartViewHolder(view);
}

public class CartViewHolder extends RecyclerView.ViewHolder {
    public TextView name;
    public TextView delivery;
    public TextView price;


    public CartViewHolder(View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.product_name3);
        delivery = itemView.findViewById(R.id.product_delivery3);
        price = itemView.findViewById(R.id.price3);


    }
  }
...