Как отобразить конкретные данные из базы данных о ресурсах в обзоре переработчика, используя его дочерний элемент? - PullRequest
0 голосов
/ 06 октября 2018

Например, я хотел бы отобразить все ордера, у которых fs_ID равен FS02.Я предоставил скриншот моей базы огня ниже:

My firebase

Это мой текущий код:

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";
    }
}

}

Экран, где онПредположим, что шоу пусто, в чем может быть проблема?Спасибо

1 Ответ

0 голосов
/ 06 октября 2018

Вы, кажется, нигде не звоните startListening, что требуется для FirebaseUI, чтобы начать наблюдать за базой данных.Прямо сейчас вы сказали adapter, какие данные следует наблюдать и что с ними делать, но никогда не указывали, чтобы они начали это делать.

Как правило, вы захотите начать слушать в onStart изсвою деятельность, а затем прекратите слушать в onStop().

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

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

Также см. Документацию FirebaseUI о жизненном цикле адаптера .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...