2017-02-02 17 views
0

Я некоторое время изучал Firebase и решил попробовать.FirebaseListAdapter не заполняется Listview из базы данных Firebase Android

Я не могу понять, почему мой ListView не заполняется. Я не могу понять, как адаптер ищет наш запрос, например, мне нужна строка «Исполнитель» и «Название» из моей базы данных firebase.

Мой 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; 
} 

Моя активность

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); 


} 

}

Моя база данных:

enter image description here

Любой он lp будет оценен!

ответ

0

При создании адаптера в местоположении он будет заселен прямыми дочерними узлами в этом месте.

Вы прикрепляете адаптер к корню базы данных, поэтому ваш дочерний узел равен issue_1. А в вашей модели данных issue_1 нет artist и title.

Простейший способ получить код работать, чтобы прикрепить уровень адаптера один ниже в дереве:

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

Я попытался сделать это, но получаю сообщение об ошибке. «com.google.firebase.database.DatabaseException: невозможно преобразовать объект типа java.lang.String для ввода com.puxil.mtrl.Song« Спасибо за предложение! –