читать данные по идентификатору из Firebase в счетчик - PullRequest
0 голосов
/ 12 июня 2018

Я хотел бы прочитать данные из firebase в счетчик, и счетчик должен содержать данные для каждого идентификатора.Есть два счетчика, цвет и размер, но я получил все данные со всех ID.Как я могу решить эту проблему?

Структура данных Firebase, как на картинке ниже:

enter image description here

и вот мой код:

DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
DatabaseReference AttrReference = reference.child("Products").child("Attribut");
....

private void getAttributProduct() {
    AttrReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            list = new ArrayList<>();
            colorList = new ArrayList<>();
            sizeList = new ArrayList<>();
            if (dataSnapshot.exists()) {
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    for (DataSnapshot child : snapshot.getChildren()) {
                        AttrProduk attr = child.getValue(AttrProduk.class);
                        list.add(attr);
                        colorList.add(attr.getColor());
                        sizeList.add(attr.getSize());

                        showSpinnerSize(sizeList);
                        showSpinnerColor(colorList);
                        showStock(attr.getStock());
                    }
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
}

private void showSpinnerSize(List<String> dataSize) {
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item, dataSize);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spSize.setAdapter(adapter);
}

private void showSpinnerColor(List<String> dataColor) {
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item, dataColor);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spColor.setAdapter(adapter);
}

private void showStock(String data) {
    stock.setText(data+" Pcs");
}

А вот что я получил, основываясь на базе данных, он должен получать данные по каждому ID:

enter image description here

1 Ответ

0 голосов
/ 12 июня 2018

Если вы хотите, чтобы счетчик отображал данные, относящиеся к клавише, вам нужно выполнить запрос:

DatabaseReference AttrReference = reference.child("Products").child("Attribut");
Query query=AttrReference.orderByKey().equalTo(key_id);
query.addValueEventListener(new ValueEventListener() {..}

https://firebase.google.com/docs/reference/android/com/google/firebase/database/Query.html#orderByKey()

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