2017-08-30 143 views
0

我有這樣的結構在數據庫獲取給定數據的ID微調

Categorias_Produtos 
- ID 
---nome: Nome1 
- ID 
---nome: Nome2 

我在微調顯示數據並捕獲返回的數據的名稱。沒關係。

但我想捕獲這個返回的數據的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,以微調並從那裏檢索信息。

我想請一些想法!

+0

創建模型。 (構造者,制定者/獲得者)。查詢您的Firebase並將查詢添加到新列表中(作爲您的模型),然後當您選擇一個名稱時,將其從模型中拉出來...因此您也可以從中獲取該ID。希望這是有道理的 – DroiDev

+0

是的它是有道理的。但我不知道我是否會知道如何去做。 @DroiDev – TiagoIB

+0

好的我發佈了。我顯然沒有測試它。它可能無法工作。但那應該讓你開始。 – DroiDev

回答

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.... 
} 

您可以使用列表和獲取者填寫您的微調器。然後,無論您點擊什麼,您都可以使用getObjectID獲取該ID。

+0

對不起,我現在不能測試,但我完全理解這個想法。 Spinner中只有名字才能看到它嗎? @DroiDev – TiagoIB

+0

是的。爲微調器創建一個適配器,並且您可以循環訪問您的列表並獲取名稱以顯示....應該與列表視圖適配器類似。 – DroiDev

1

我建議您將根據ID重複存儲您的ID,這將爲您簡化事情,當你想要檢索數據。 DENORMALIZATION是firebase或任何JSON nosql數據庫的魔力詞。

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