FB die Daten als array
Bin ich versucht zu implementieren FB in meine Android-app und ich möchte in der Lage sein, ziehen Sie alle Einträge in FB in der Reihenfolge, die Sie angezeigt werden in einem string-array in eine ListView
Hier ist die rohen JSON:
[ 5, "quot", "waaaaa", "also a quote", "oh this one is a little longer man", "gosh really long. wow. im very inspired. golly gee wiz" ]
und der code, den ich verwende, um zu versuchen und bekommen es:
public class MyActivity extends ListActivity {
ArrayList<String> LIST = new ArrayList<String>();
Boolean wow = true;
Context context = this;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Firebase.setAndroidContext(context);
updateList();
}
public void makeList(ArrayList<String> input){
setListAdapter(new ArrayAdapter<String>(this, R.layout.mylist,input));
ListView listView = getListView();
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(),
((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});
}
public void updateList() {
Firebase myFirebaseRef = new Firebase("https://admin1.firebaseio.com/");
myFirebaseRef.child("0").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue());
int length = Integer.parseInt(snapshot.getValue().toString());
Firebase myFirebaseRef = new Firebase("https://admin1.firebaseio.com/");
for(int i=1; i<length; i++) {
String doIt = Integer.toString(i);
myFirebaseRef.child(doIt).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue());
LIST.add(snapshot.getValue().toString());
}
@Override
public void onCancelled(FirebaseError error) {
}
});
}makeList(LIST);
}
@Override
public void onCancelled(FirebaseError error) {
}
});
}
}
Ich dachte, ich könnte den ersten (0.) Objekt werden die Anzahl der Einträge und dann radeln Sie durch die gesamte Datei verwenden .getValue aber wenn diese ausgeführt wird bekomme ich die out-of-memory-Ausnahmen und die app Kraft schließt. Alles, was ich bin sicher, dass die relevanten FB-Sachen ist das Problem und nicht die ListView. Vielen Dank für alle Tipps.
- Ich würde vorschlagen, beginnend mit Lesen über firebase.com/docs/android/guide/understanding-data.html und firebase.com/blog/...
- Yep. Definitiv Graben, in die docs und sparen Sie sich einige Schmerzen und Prügel hier. Fast alles über dieses sieht wie es verbessert werden könnte, mit ein bisschen Liebe docs.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstens, Ihre Daten werden in einem JSON-Daten-Objekt (also kein array). Sie wollen nicht zu speichern sequenziellen, numerischen ids in verteilten Daten.
Hören zum ersten
n
Objekte, nutzen die Abfrage-Methoden undlimitToFirst
.// ...
in diesem Beispiel erwartet, dass Sie füllen Sie den rest. Die Methoden zu überschreiben sind abgedeckt in die erste-Schritte-Thema.