Android 检索给定数据微调器的id

Android 检索给定数据微调器的id,android,android-layout,firebase,firebase-realtime-database,Android,Android Layout,Firebase,Firebase Realtime Database,我在数据库中有这个结构 Categorias_Produtos - ID ---nome: Nome1 - ID ---nome: Nome2 我在微调器中显示数据并捕获返回数据的名称。没关系 但是我想捕获这个返回数据的Id,我不知道怎么做 代码: mDatabaseCategorias=FirebaseDatabase.getInstance().getReference().child(“Categorias_Produtos”); mResultadoCat=(TextView)fin

我在数据库中有这个结构

Categorias_Produtos
- ID
---nome: Nome1
- ID 
---nome: Nome2
我在微调器中显示数据并捕获返回数据的名称。没关系

但是我想捕获这个返回数据的Id,我不知道怎么做

代码:

mDatabaseCategorias=FirebaseDatabase.getInstance().getReference().child(“Categorias_Produtos”);
mResultadoCat=(TextView)findViewById(R.id.tvresultadoSpinnerCat);
mDatabaseCategorias.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
List categorias=new ArrayList();
对于(DataSnapshot分类Napshot:DataSnapshot.getChildren()){
String nomeCateg=categoriasSnapshot.child(“nome”).getValue(String.class);
分类。添加(命名);
}
//spiners resultado
mSpinnerCateg=(微调器)findViewById(R.id.spinnerCateg);
ArrayAdapter categoriasAdapter=新的ArrayAdapter(CadastroServico.this,android.R.layout.simple\u微调器\u项,categorias);
categoriasAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
mSpinnerCateg.setAdapter(分类适配器);
mSpinnerCateg.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
字符串resultado=parent.getItemAtPosition(position.toString();
mResultadoCat.setText(resultado);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
据我所知,我需要以某种方式将项目ID和他的名字一起发送到Spinner,然后从那里检索信息

我想要一些想法请

创建一个列表

List<SpinnerModel> list;
list = new ArrayList<>();
创建一个模型

public class SpinnerModel {
    String objectID;
    String objectName;

    public SpinnerModel(String objectID, String objectName){
        this.objectID = objectID;
        this.objectName = objectName;
    }

    create getters....
}

您可以使用列表和getter来填充微调器。然后,无论单击什么,都可以使用getObjectID获取id。

我建议您将重复的id存储在根id下,这将简化您检索数据时的操作。非规范化是firebase或任何JSON nosql数据库的神奇词汇

Categorias_Produtos
- 15
---nome: Nome1
---id: 15
- 16
---nome: Nome2
---id: 16

创建一个模型。(构造函数、setter/getter)。查询您的firebase并将查询添加到新列表中(作为您的模型),然后当您选择一个名称时,它将从模型中提取该名称…因此您也可以从中获取id。希望这是有道理的。但我不知道我是否知道该怎么做@我贴的Droidvok。我显然没有测试它。它可能不起作用。但是这应该可以让你开始了。你只需要重写
ArrayAdapter#getItemId
方法并返回给定位置的id对不起,我不明白吗@我现在无法测试,但我完全理解这个想法。在微调器中是否只显示名称@是的。为微调器创建一个适配器,您可以在列表中循环并从中获取名称以显示。。。。应类似于列表视图适配器。
public class SpinnerModel {
    String objectID;
    String objectName;

    public SpinnerModel(String objectID, String objectName){
        this.objectID = objectID;
        this.objectName = objectName;
    }

    create getters....
}
Categorias_Produtos
- 15
---nome: Nome1
---id: 15
- 16
---nome: Nome2
---id: 16