2017-03-12 1 views
0

Zum Beispiel habe ich 4 Kinder ich die Datenbank: A, B, C, D. Jeder von ihnen hat ein Attribut namens 'countryName'. Angenommen, A hat Großbritannien, B hat Frankreich, C hat Italien und D hat Italien. Diese Childer werden als Liste angezeigt und oberhalb der Liste befindet sich der Spinner mit 3 Optionen - Vereinigtes Königreich, Frankreich, Italien. Standardmäßig sehe ich alle 4 Kinder in einer Listenansicht. Sagen wir, ich wähle Vereinigtes Königreich auf einem Spinner und dann sehe ich nur Objekt A. Sagen wir, ich wähle Italien auf einem Spinner und ich sehe dann Objekte C und D auf einer Liste Ansicht. Ich weiß nur nicht, wie ich die Abfrage mit verschiedenen Parametern zur Datenbank aufrufen soll. Hier ist mein Code für einen Spinner:Android Google Firebase Datenbank Abfrage auf 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) { 

     } 
    }); 

[UPDATE]

So konnte ich mein Problem beheben, indem Sie einen Zuhörer Hinzufügen wie von Frank van Puffelen vorgeschlagen.

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

Ihre Abfrage scheint in Ordnung. Was fragst du? Wie bekomme ich die Daten von dieser Abfrage? –

+1

Sie müssen [Hörer anhängen] (https://firebase.google.com/docs/database/android/lists-of-data#child-events), um die Abfrageergebnisse zu erhalten. Für viele Fragen, die sich mit Abfragen befassen, siehe http://stackoverflow.com/search?q=%5Bfirebase-database%5D%5Bandroid%5D+query. Sie enthalten eine Menge Code, den Sie zur Inspiration verwenden können. –

+0

Können Sie uns den Inhalt Ihrer LocationCurrent-Klasse zeigen? –

Antwort

1

So gelang es mir, durch Hinzufügen eines Zuhörers, mein Problem zu beheben, wie von Frank van Puffelen vorgeschlagen. Der folgende Code ist innerhalb onItemSelected Methode

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

Bitte markieren Sie dieses als akzeptiert – koceeng

Verwandte Themen