2017-02-02 7 views
0

Ich habe Firebase schon eine Weile recherchiert und mich entschieden es auszuprobieren.FirebaseListAdapter füllt Listview nicht aus Firebase Database Android

Ich kann nicht herausfinden, warum mein ListView nicht auffüllt. Ich kann nicht scheinen zu verstehen, wie der Adapter für unsere Abfrage sucht, zum Beispiel möchte ich die Zeichenfolge "Künstler" und "Titel" aus meiner Firebase-Datenbank.

Mein POJO:

public class Song { 

private String mTitle; 
private String mArtist; 

public Song(String title, String artist) { 
    mTitle = title; 
    mArtist = artist; 

} 

public Song(){ 
    //Needed for firebase 
} 

public String getTitle() { 
    return mTitle; 
} 

public String getArtist() { 
    return mArtist; 
} 

public void setTitle(String title) { 
    mTitle = title; 
} 

public void setArtist(String artist) { 
    mArtist = artist; 
} 

Meine Aktivität

public class player extends AppCompatActivity { 

FirebaseListAdapter<Song> myAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_player2); 

    ListView songListView = (ListView) findViewById(R.id.songListView); 
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 

    myAdapter = new FirebaseListAdapter<Song>(player.this, Song.class, R.layout.song_item, ref) { 
     @Override 
     protected void populateView(View view, Song song, int position) { 

      TextView textView = (TextView) view.findViewById(android.R.id.text1); 
      ((TextView)view.findViewById(R.id.titleItem)).setText(song.getTitle()); 
      ((TextView)view.findViewById(R.id.artistItem)).setText(song.getArtist()); 
     } 
    }; 
    songListView.setAdapter(myAdapter); 


} 

}

Meine Datenbank:

enter image description here

Alle er LP würde geschätzt werden!

Antwort

0

Wenn Sie einen Adapter an einem Speicherort erstellen, wird er mit den direkten untergeordneten Knoten unter diesem Speicherort gefüllt.

Sie hängen den Adapter an das Stammverzeichnis der Datenbank an, sodass Ihr untergeordneter Knoten issue_1 ist. Und in Ihrem Datenmodell issue_1 hat keine artist und title Eigenschaften.

einfachste Weg, den Code zum Laufen zu bringen ist, den Adapter eine Ebene tiefer in den Baum zu befestigen:

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

myAdapter = new FirebaseListAdapter<Song>(player.this, Song.class, 
              R.layout.song_item, issue1) { 
+0

Ich habe versucht, dies zu tun, aber einen Fehler. "com.google.firebase.database.DatabaseException: Objekt des Typs java.lang.String kann nicht in den Typ com.puxil.mtrl.Song konvertiert werden" Vielen Dank für den Vorschlag! –

Verwandte Themen