2017-03-12 3 views
0

たとえば、私はデータベースにA、B、C、Dの4人の子供がいます。それぞれには 'countryName'という名前の属性があります。 Aは英国、Bはフランス、Cはイタリア、Dはイタリアがあると仮定する。これらのチルダはリストとして表示され、リストの上には3つのオプション(英国、フランス、イタリア)のスピナーがあります。デフォルトでは、4人の子供がすべてリストビューで表示されます。スピナーで英国を選んだ後、オブジェクトAしか見ることはできません。私はSpinnerでイタリアを選択し、リストビューでオブジェクトCとDを表示します。私はさまざまなパラメータでデータベースにクエリを呼び出す方法を知りません。ここでは、スピナーのための私のコードは次のとおりです。AndroidのGoogle FirebaseデータベースSpinnerでの問い合わせ

spinCountry = (Spinner) findViewById(R.id.spinCountry); 

    ArrayAdapter<CharSequence> spinAdapter = ArrayAdapter.createFromResource(this, 
      R.array.country_array, android.R.layout.simple_spinner_item); 

    spinAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    spinCountry.setAdapter(spinAdapter); 

    spinCountry.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      //Get whatever is chosen on a spinner 
      String spinnerCountry = parent.getItemAtPosition(position).toString(); 

      //Here is my query which on SQL would be 'SELECT * FROM THE DATABASE WHERE countryName EQUALS TO'country on a chosen on spinner' 
      Query querySpinner = mLocationDatabaseReference.orderByChild("countryName").equalTo(spinnerCountry); 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 

[FIX]

は、だから私はフランク・バンPuffelenにより示唆されるようにリスナーを追加することによって、私の問題を解決するために管理しました。

mLocationAdapter.clear(); 

       querySpinner.addChildEventListener(new ChildEventListener() { 
        @Override 
        public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
         locationCurrent = dataSnapshot.getValue(LocationCurrent.class); 
         mLocationAdapter.add(locationCurrent); 
        }... 
//Everything else is empty on addChildEventListener method so no point pasting it here 
+0

あなたの質問は申し訳ございません。何を聞いていますか?実際にそのクエリからデータを取得する方法は? –

+1

クエリ結果を取得するには、[リスナーを添付する]必要があります(https://firebase.google.com/docs/database/android/lists-of-data#child-events)。クエリを扱う多くの質問については、http://stackoverflow.com/search?q=%5Bfirebase-database%5D%5Bandroid%5D+queryを参照してください。それらには、インスピレーションのために使用できる多くのコードが含まれています。 –

+0

LocationCurrentクラスのコンテンツを表示できますか? –

答えて

1

私はFrank van Puffelenが提案したようにリスナーを追加して問題を解決することができました。下記のコードはonItemSelectedの中にあります。

mLocationAdapter.clear(); 

      querySpinner.addChildEventListener(new ChildEventListener() { 
       @Override 
       public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
        locationCurrent = dataSnapshot.getValue(LocationCurrent.class); 
        mLocationAdapter.add(locationCurrent); 
       }... 
//Everything else is empty on addChildEventListener method so no point pasting it here 
+0

このマークを合格とマークしてください – koceeng

関連する問題