Hallo,
meine App oder mein Code soll Daten aus der Firebase Datenbank auslesen
und zwar diese:
[Blockierte Grafik: https://ibb.co/KsGS7zc]
Ich möchte diese Knoten aus der Datenbank auslesen, in eine ArrayList speichern (weil dynamisch) und sie anschließend mit einer ListView ausgeben. Kurz gesagt eine KarteiKarten App bauen.
Ich habe bemerkt, dass die Daten durch den Befehl Log.i(...) nicht angezeigt werden, deswegen fing ich an, die über ein Toast auszugeben, was funktioniert.
Mein Problem ist es, das die Daten aus der Datenbank wahrscheinlich nicht in die ArrayList list eingespeichert werden, deswegen habe ich ein String Array geschrieben, mit diesen String Array lässt sich eine ListView anzeigen.
Wenn ich aber die ListView mit meiner ArrayList ausgeben möchte, bricht die App ab und es kommt zu einem Fehler (Zeile 31, 32).
Habt Ihr eine Idee? Könnt Ihr mir helfen?
public class CardsActivity extends AppCompatActivity {
ArrayList<String> list;
ListView lv;
ArrayAdapter<String> arrayAdapter;
int id;
public static final String[] model = {
"Lektion 1",
"Lektion 2",
"Lektion 3",
"Lektion 4",
"Lektion 5",
"Lektion 6",
"Lektion 7",
"Lektion 8",
"Lektion 9",
"Lektion 10"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cards);
readData();
list = new ArrayList<String>();
lv = (ListView) findViewById(R.id.list_view);
lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1 , model));
//arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list);
//lv.setAdapter(arrayAdapter);
}
public void readData(){
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot childDataSnapshot : dataSnapshot.getChildren()){
String var = (String) childDataSnapshot.getKey();
list.add((String) var);
Log.i("DataValue", childDataSnapshot.getKey());
Log.i("DataVar", var);
//Toast.makeText(CardsActivity.this, "Var: "+var, Toast.LENGTH_SHORT).show();
}
//lv.setAdapter(arrayAdapter);
//arrayAdapter.notifyDataSetChanged();
for(int i=0; i<list.size();i++){
Toast.makeText(CardsActivity.this, "Var: "+list.get(i), Toast.LENGTH_SHORT).show();
model[i] = list.get(i);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.e("The read failed: " ,databaseError.getMessage());
}
});
for(int i = 0; i < list.size(); i++){
Log.d("DatabaseList", list.get(i).toString());
}
int size = list.size();
Log.d("DatabaseLSize", String.valueOf(size));
}
Alles anzeigen