检索给定数据Spinner的id

时间:2017-08-30 19:16:27

标签: android android-layout firebase firebase-realtime-database

我在数据库中有这个结构

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,并从那里检索该信息。

我想要一些想法!!

2 个答案:

答案 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