1

For example, I'd like to display all orders that has fs_ID equal to FS02. I provided a screenshot of my firebase below:

My firebase

This is my current code:

public class NewOrders extends AppCompatActivity {

public RecyclerView recyclerView;
public RecyclerView.LayoutManager layoutManager;

FirebaseDatabase database;
DatabaseReference requests;

FirebaseRecyclerAdapter<Request, OrderViewHolder> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_orders);

    //Firebase
    database = FirebaseDatabase.getInstance();
    requests = database.getReference("Order_Header");

    recyclerView = findViewById(R.id.listOrders);
    recyclerView.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);

    adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(
            Request.class,
            R.layout.order_layout,
            OrderViewHolder.class,
            requests.orderByChild("fs_ID")
                    .equalTo("FS02")
    ) {
        @Override
        protected void populateViewHolder(OrderViewHolder viewHolder, Request model, int position) {
            viewHolder.txtOrderID.setText(adapter.getRef(position).getKey());
            viewHolder.txtOrderStatus.setText(convertCodeToStatus(model.getStatus()));
            viewHolder.txtOrderUsername.setText(model.getUsername());
            viewHolder.txtOrderFname.setText(model.getFirstName());
            viewHolder.txtOrderLname.setText(model.getLastName());
            viewHolder.txtOrderEmail.setText(model.getEmail());
            viewHolder.txtOrderAddress.setText(model.getAddress());
        }
    };
    recyclerView.setAdapter(adapter);
}

private String convertCodeToStatus(String status){
    //pasok db how

    if (status.equals("OS1")) {
        return "Placed";
    }
    else if (status.equals("OS2")) {
        return "In progress";
    }
    else {
        return "OS3";
    }
}

}

The screen where it is suppose to show is empty, what might be the problem? Thanks

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
Joan
  • 25
  • 2
  • 6
  • Hmm.... after writing an answer, I see that you're trying to query on a nested child. That is not possible with Firebase. See https://stackoverflow.com/questions/27207059/firebase-query-double-nested – Frank van Puffelen Oct 06 '18 at 14:37

1 Answers1

1

You seem to not be calling startListening anywhere, which is required for FirebaseUI to start observing the database. Right now you told the adapter what data to observe, and what to do with it, but you never told it to start doing so.

You'll typically want to start listening in the onStart of your activity, and then stop listening in onStop().

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

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

Also see the FirebaseUI documentation on the adapter lifecycle.

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807