我在数据库中有这个结构
Categorias_Produtos
- ID
---nome: Nome1
- ID
---nome: Nome2
我在Spinner中显示数据并捕获返回数据的名称。没关系。
但是我想捕获此返回数据的ID,我不知道该怎么做?
代码:
mDatabaseCategorias = FirebaseDatabase.getInstance().getReference().child("Categorias_Produtos");
mResultadoCat = (TextView) findViewById(R.id.tvresultadoSpinnerCat);
mDatabaseCategorias.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> categorias = new ArrayList<>();
for( DataSnapshot categoriasSnapshot: dataSnapshot.getChildren() ){
String nomeCateg = categoriasSnapshot.child("nome").getValue(String.class);
categorias.add(nomeCateg);
}
//spiners resultado
mSpinnerCateg = (Spinner) findViewById(R.id.spinnerCateg);
ArrayAdapter<String> categoriasAdapter = new ArrayAdapter<String>(CadastroServico.this, android.R.layout.simple_spinner_item, categorias);
categoriasAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinnerCateg.setAdapter(categoriasAdapter);
mSpinnerCateg.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String resultado = parent.getItemAtPosition(position).toString();
mResultadoCat.setText(resultado);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
根据我的理解,我需要以某种方式将项目ID和他的名字一起发送给Spinner,并从那里检索该信息。
我想要一些想法!!
答案 0 :(得分:1)
创建一个列表。
List<SpinnerModel> list;
list = new ArrayList<>();
查询您的firebase并将您拥有的内容添加到此列表中...到新模型中。
list.add(new SpinnerModel(objectID, objectName));
创建模型。
public class SpinnerModel {
String objectID;
String objectName;
public SpinnerModel(String objectID, String objectName){
this.objectID = objectID;
this.objectName = objectName;
}
create getters....
}
您可以使用列表和getter来填充您的微调器。然后无论你点击什么,都可以使用getObjectID来获取id。
答案 1 :(得分:1)
我建议您存储在根ID下复制的ID,这样可以在您想要检索数据时简化操作。 DENORMALIZATION是firebase或任何JSON nosql数据库的神奇词。
Categorias_Produtos
- 15
---nome: Nome1
---id: 15
- 16
---nome: Nome2
---id: 16