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