java - 将每个 ID 的数据从 firebase 读取到 spinner 中

标签 java android firebase firebase-realtime-database android-spinner

我想将数据从 firebase 读取到 spinner 中,并且 spinner 应该包含每个 ID 的数据。有两个微调器,颜色和尺寸,但我得到的是所有 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

最佳答案

如果您希望微调器显示与某个键相关的数据,那么您需要执行查询:

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()

关于java - 将每个 ID 的数据从 firebase 读取到 spinner 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810733/

相关文章:

ios - Firebase Messaging - 卸载不会阻止通知

java - Apache PDFBox - 无法减小 PDF 内容的大小

java - next() 和 nextLine() 都无法帮助存储带有空格的名称

java - 如何使用泛型在抽象类中注入(inject)服务

android - 设置背景图像不起作用

android - Firebase 集成后 Crashlytics 混淆停止工作

java - 将整数添加到节点内的数组中

java - 需要有关颜色选择器的帮助以检查 ListView 项目

c# - 将图像从android上传到ASP.NET服务器C#

javascript - 如何在 firebase 中获取对象的先前值(值)?