2016-11-19 6 views
0

Benötigen Sie Hilfe zu Firebase-Informationen zu ListView. Ich muss alle Kinder von "Geschäften" holen, aber kann nicht. Wer zu lösen weiß, bitte helfen. Während des Druckens gibt es mir ein korrektes Array, aber ich kann es nicht in ListView implementieren.Android Firebase-Population zur Listenansicht

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_dealer_list_view); 

    mListView = (ListView) findViewById(R.id.dealer_listView); 

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 

    ref.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      DataSnapshot friendsSnapshot = dataSnapshot.child("Shops"); 
      for (DataSnapshot friendSnapshot : friendsSnapshot.getChildren()) { 


       String message = friendSnapshot.child("Dealer").getValue(String.class); 
       System.out.println(message); 

       DatabaseReference ref = FirebaseDatabase.getInstance().getReferenceFromUrl("My URl"+message); 

       FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(DealerListView.this, 
         String.class, 
         android.R.layout.simple_list_item_1, 
         ref) { 

        @Override 
        protected void populateView(View v, String s, int i) { 

    TextView textView = (TextView) v.findViewById(android.R.id.text1); 
         textView.setText(s); 
        } 
       }; 
       mListView.setAdapter(adapter); 
      } 
     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { 
     } 
    }); 
} 

aktualisieren

- Shops 
     -AAA 
      Dealer: "AAA" 
      Email: "[email protected]" 
      SAP: "D666" 
     -BBB 
      Dealer: "BBB" 
      Email: "[email protected]" 
      SAP:  "D333" 
     -CCC 
      Dealer: "BBB" 
      Email: "[email protected]" 
      SAP:  "D222" 
+0

Bearbeiten Sie Ihre Frage schließen ein minimaler Ausschnitt des JSON (als Text, kein Screenshot), auf den dieser Code zugreift. –

+0

Ich habe meinen Beitrag aktualisiert – Rufat

+0

Hier finden Sie perfekte Beispiele mit einem ListView und einem RecyclerView: https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md – Anfuca

Antwort

1

Es scheint, Sie sind Angelegenheiten overcomplicating. Dies sollte der einzige Code, die Sie brauchen:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Shops"); 

FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(
    DealerListView.this, 
    String.class, 
    android.R.layout.simple_list_item_1, 
    ref) { 
     protected void populateView(View v, String s, int i) { 
      TextView textView = (TextView) v.findViewById(android.R.id.text1); 
      textView.setText(s); 
     } 
     protected String parseSnapshot(DataSnapshot snapshot) { 
      return snapshot.child("Dealer").getValue(String.class); 
     } 
}; 
mListView.setAdapter(adapter); 

Also mit diesem Code eine Liste von Shop-Snapshots und dann für jeden Schnappschuss den Wert der Dealer Eigenschaft extrahieren in parseSnapshot

+0

Danke, listview geben korrekte Zahl von Reihen zurück, ich sehe sie, aber sie sind leer keine "Händler" Namen. – Rufat

+0

Kann ich ein Beispiel für dieses Extrahieren bekommen, ich bin neu in Java, es wird mir helfen zu verstehen, was genau ich tun muss. Vielen Dank im Voraus – Rufat

+0

Sie möchten den Code in einem Debugger ausführen und sehen, was Sie in 'parseSnapshot()' erhalten. –