How can I retrieve data from products in my orders child Firebase Realtime Database:
This is my Orders_class
this class contains only orderId and Order full pay
package com.example.safetysouq.Orders_Classes;
public class Orders_Class {
String OrderId,FullPay,ProductName;
public String getProductName() {
return ProductName;
}
public void setProductName(String productName) {
ProductName = productName;
}
public String getFullPay() {
return FullPay;
}
public void setFullPay(String fullPay) {
FullPay = fullPay;
}
public String getOrderId() {
return OrderId;
}
public void setOrderId(String orderId) {
OrderId = orderId;
}
}
this is my Orders_adapter
this class contains only orderId and Order full pay
public class Orders_Adapter extends BaseAdapter {
ArrayList<Order_Item_Class>orderItemClassArrayList;
Orders_Item_Adapter ordersItemAdapter;
Context context;
DatabaseReference databaseReference,databaseReference2;
FirebaseAuth firebaseAuth;
ArrayList<Orders_Class>ordersClassArrayList;
ArrayList<SingleCartProductInformationDataClass>singleCartProductInformationDataClassArrayList;
LayoutInflater layoutInflater;
public Orders_Adapter(Context context, DatabaseReference databaseReference, FirebaseAuth firebaseAuth, ArrayList<Orders_Class> ordersClassArrayList) {
this.context = context;
this.databaseReference = databaseReference;
this.firebaseAuth = firebaseAuth;
this.ordersClassArrayList = ordersClassArrayList;
}
@Override
public int getCount() {
return ordersClassArrayList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (layoutInflater==null){
layoutInflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if(convertView==null){
convertView =layoutInflater.inflate(R.layout.orders_gridview,null);
}
TextView orders_id =convertView.findViewById(R.id.orderid);
TextView order_total_price = convertView.findViewById(R.id.ordertotalprice);
GridView order_item_grid_view = convertView.findViewById(R.id.ordersitemsgridview);
orders_id.setText("Order ID : "+"#"+ordersClassArrayList.get(position).getOrderId());
order_total_price.setText("Total Money : "+ordersClassArrayList.get(position).getFullPay()+" EGP");
return convertView;
}
}
this is my Orders_page(activity)
package com.example.safetysouq.Orders_Classes;
import android.os.Bundle;
import android.widget.GridView;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.example.safetysouq.R;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
public class Orders_Page extends AppCompatActivity {
private GridView ordersGridview;
private ArrayList<Orders_Class> ordersClassArrayList;
private Orders_Adapter ordersAdapter;
private DatabaseReference databaseReference;
private FirebaseAuth firebaseAuth;
private String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_orders_page);
ordersGridview=findViewById(R.id.ordersGridview);
databaseReference = FirebaseDatabase.getInstance().getReference();
firebaseAuth= FirebaseAuth.getInstance();
databaseReference=FirebaseDatabase.getInstance().getReference().child("Orders").child(firebaseAuth.getCurrentUser().getUid());
ordersClassArrayList=new ArrayList<>();
ordersAdapter = new Orders_Adapter(Orders_Page.this,databaseReference,firebaseAuth,ordersClassArrayList);
ordersGridview.setAdapter(ordersAdapter);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for(DataSnapshot dataSnapshot:snapshot.getChildren()){
Orders_Class ordersClass = dataSnapshot.getValue(Orders_Class.class);
ordersClassArrayList.add(ordersClass);
}
ordersAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
ordersClassArrayList.get(position).getOrderId()
inside yourDatabaseReference
object?orders
node, right?