How to pass Hashmap to another Activity and show it in Recycler View?

Viewed 43

Cart Activity(Here I want to show this hashmap data in Recycler View...Any Help will be Highly Appreciated)

package com.example.silkenscoops;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Pair;

import java.util.HashMap;


public class CartActivity extends AppCompatActivity {
    private HashMap<String, Pair<String,String>> cartMap=new HashMap<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cart_view);
        cartMap= (HashMap<String, Pair<String, String>>) getIntent().getSerializableExtra("h");
    }
}

My Adapter class

package com.example.silkenscoops;

import androidx.recyclerview.widget.RecyclerView;

import android.util.Pair;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import java.util.HashMap;

public class MainAdapter extends FirebaseRecyclerAdapter<Items, MainAdapter.myViewHolder> {

    private HashMap<String, Pair<String,String>> cartMap=new HashMap<>();

    public MainAdapter(@NonNull FirebaseRecyclerOptions<Items> options) {
        super(options);
    }
    @Override
    protected void onBindViewHolder(@NonNull myViewHolder holder, int position, @NonNull Items model) {
        holder.Price.setText(model.getPrice());
        holder.Product.setText(model.getProduct());
        holder.Stock.setText(model.getStock());
        holder.increment.setVisibility(View.GONE);
        holder.decrement.setVisibility(View.GONE);
        holder.add.setOnClickListener(new View.OnClickListener() {
            int count=0;
            @Override
            public void onClick(View v) {
                holder.increment.setVisibility(View.VISIBLE);
                holder.decrement.setVisibility(View.VISIBLE);
                if(count<Integer.parseInt(model.getStock())) {
                    count++;
                    holder.add.setText(String.valueOf(count));
                    cartMap.put(model.getProduct(),new Pair<String,String>(String.valueOf(count),model.getPrice()));
                }

                holder.decrement.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(count>0) {
                            count--;
                            holder.add.setText(String.valueOf(count));
                            cartMap.put(model.getProduct(),new Pair<String,String>(String.valueOf(count),model.getPrice()));
                        }
                        if(count<=0){
                            holder.add.setText("ADD");
                            holder.increment.setVisibility(View.GONE);
                            holder.decrement.setVisibility(View.GONE);
                            cartMap.remove(model.getProduct());
                        }
                    }
                });
            }
        });
    }



    @NonNull
    @Override
    public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.display,parent,false);
        return new MainAdapter.myViewHolder(view);
    }

    class myViewHolder extends RecyclerView.ViewHolder{
        TextView Product, Price, Stock,add;
        ImageView decrement,increment;
        public myViewHolder(@NonNull View itemView) {
            super(itemView);
            Price=itemView.findViewById(R.id.Price);
            Product=itemView.findViewById(R.id.Product);
            Stock=itemView.findViewById(R.id.Stock);
            add=itemView.findViewById(R.id.add);
            increment=itemView.findViewById(R.id.increment);
            decrement=itemView.findViewById(R.id.decrement);
        }
    }

    public HashMap<String, Pair<String, String>> getCartMap() {
        return cartMap;
    }
}

My MainActivity(Actually it is the menu list..)

package com.example.silkenscoops;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.os.Bundle;
import android.util.Pair;
import android.view.View;
import android.widget.ImageView;;

import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;


import java.util.HashMap;

public class MainItems extends AppCompatActivity {
    private RecyclerView recyclerView;
    private ImageView cart_btn;
    MainAdapter adapter;
    DatabaseReference databasereference;
    private HashMap<String, Pair<String,String>> cartMap=new HashMap<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_display);
        getSupportActionBar().hide();
        cart_btn=findViewById(R.id.cart_btn);
        databasereference = FirebaseDatabase.getInstance().getReference();
        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        //This is the right Query that should be passed to the setQuery() method
        //The fields should stay as in the Items class (I capital)
        Query query = FirebaseDatabase.getInstance().getReference().child("Cups");
        FirebaseRecyclerOptions<Items> options = new FirebaseRecyclerOptions.Builder<Items>()
                        .setQuery(query, Items.class)
                        .build();
        adapter = new MainAdapter(options);
        recyclerView.setAdapter(adapter);

        cart_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               cartMap=adapter.getCartMap();
               Intent intent = new Intent(MainItems.this, CartActivity.class);
               intent.putExtra("list", cartMap);
               startActivity(intent);

            }
        });
    }

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

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

There is no error , but how am I supposed to pass my hashmap from ActivityMain to Cart Activity and show it in recycler View...I have no idea now and after working and thinking for 10-15 days I'm asking here..Please help me..

Thanks

0 Answers
Related