我想将数据从 firebase 读取到 spinner 中,并且 spinner 应该包含每个 ID 的数据。有两个微调器,颜色和尺寸,但我得到的是所有 ID 的所有数据。我该如何解决这个问题?
Firebase 数据结构如下图所示:
这是我的代码:
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 的数据:
最佳答案
如果您希望微调器显示与某个键相关的数据,那么您需要执行查询:
DatabaseReference AttrReference = reference.child("Products").child("Attribut");
Query query=AttrReference.orderByKey().equalTo(key_id);
query.addValueEventListener(new ValueEventListener() {..}
关于java - 将每个 ID 的数据从 firebase 读取到 spinner 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810733/