2016-03-19 6 views
0

Ich möchte ein zweites Spinner basierend auf der Wahl des ersten Spinner bevölkern. Wie Sie in meinem firebase JSON sehen können, gibt es unter jedem Training Elemente, deren Werte wahr oder falsch sind. Wenn ein Element während eines Workouts wahr ist, möchte ich diesen Elementnamen im zweiten Spinner anzeigen. Wenn der Benutzer beispielsweise im ersten Spinner Heavy Chest und Arms auswählt, sollten sowohl Bankdrücken als auch Incline Dumbbell Press den zweiten Spinner füllen. Ich bekomme eine Antwort mit meinem aktuellen Code, aber bekomme den Schlüsselwert gerade nicht raus.Füllen von Spinner aus Firebase-Daten

Json-Datei:

{ 
    "elements" : { 
    "element_id_0" : { 
     "description" : "While laying flat on your back, arms at 90 degrees etc", 
     "name" : "Bench press" 
    }, 
    "element_id_1" : { 
     "description" : "Incline the backboard 30 degrees and etc etc", 
     "name" : "Incline Dumbbell Press" 
    } 
    }, 
    "workouts" : { 
    "workout_id_0" : { 
     "category" : "Heavy Chest and Arms", 
     "elements" : { 
     "element_id_0" : "true", 
     "element_id_1" : "true" 
     } 
    }, 
    "workout_id_1" : { 
     "category" : "Light Back and Shoulders", 
     "elements" : { 
     "element_id_0" : "true" 
     } 
    } 
    } 
} 

Einige meiner Code:

FirebaseSpinnerRef.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
      String category=postSnapshot.child("category").getValue().toString(); 
      if(category.equals(sp1)) { 
       Object j =postSnapshot.child("elements").getValue(); 
      } 
     } 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 

    } 
}); 

Antwort

1

Statt

Object j =postSnapshot.child("elements").getValue(); 

Verwenden

Elements_post = postSnapshot.child("elements").getValue(Elements_.class); 

Sie können Ihre Werte erhalten, indem Getter in dem unten stehenden Klasse

public class Elements_ { 
private ElementId0 elementId0; 
private ElementId1 elementId1; 
    public Elements_(){ 
// must have empty construct to bind the data 
} 

/** 
* 
* @return 
* The elementId0 
*/ 
public ElementId0 getElementId0() { 
return elementId0; 
} 



/** 
* 
* @return 
* The elementId1 
*/ 
public ElementId1 getElementId1() { 
return elementId1; 
} 

public class ElementId0 { 

private String description; 
private String name; 

/** 
* 
* @return 
* The description 
*/ 
public String getDescription() { 
return description; 
} 


/** 
* 
* @return 
* The name 
*/ 
public String getName() { 
return name; 
} 
} 

public class ElementId1 { 

private String description; 
private String name; 

/** 
* 
* @return 
* The description 
*/ 
public String getDescription() { 
return description; 
} 



/** 
* 
* @return 
* The name 
*/ 
public String getName() { 
return name; 
} 


} 

} 

haben einen Blick Get data from firebase

+0

Das ist ein schöner Anfang rufen, aber ich möchte prüfen, ob dieses Element unter Training wahr ist, und wenn es ich will um von den Elementen zu kommen. –