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
Ihre Abfrage scheint in Ordnung. Was fragst du? Wie bekomme ich die Daten von dieser Abfrage? –
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. –
Können Sie uns den Inhalt Ihrer LocationCurrent-Klasse zeigen? –