Android add all object to list after loop

I try to add all object to list after I finish the loop. Here is my method in adapter that I want to add.

public MusicCustomAdapter(Context context) {
            songList = new ArrayList<>();
            this.context = context;
}

public void addMoreItem(List<SongRespones.Songs> songList) {
                this.songList = songList;
                notifyDataSetChanged();
 }

This is my callResponse using Retrofit:

    private void getAllSongBySinger() {
            songService = ServiceGenerator.createService(SongService.class);
            Call<SongRespones> callAllSong = songService.findAllSongBySinger();
            callAllSong.enqueue(new Callback<SongRespones>() {
                @Override
                public void onResponse(Call<SongRespones> call, Response<SongRespones> response) {
                    List<SongRespones.Songs> listSong;
                    SongRespones songRespones = response.body();
                    listSong = songRespones.getSongs();
                    for (SongRespones.Songs songs : listSong) {
                        if (songs.getSinger().getId() == getSingerId) {
                            Log.e(LOG, songs + "");
                            adapter.addMoreItem(What must I input in here?);
                            recyclerView.setAdapter(adapter);

                        }
                    }

                }

                @Override
                public void onFailure(Call<SongRespones> call, Throwable t) {
                    t.printStackTrace();
                }
            });

        }

Please help me:

1 answer

  • answered 2017-08-12 09:59 santalu

    I assume you only want to show selected singer's song. So basically in your onResponse method create new list and add the songs you want to show and finally update your adapter with this list.

                    SongRespones songRespones = response.body();
                    List<SongRespones.Songs> listSong = songRespones.getSongs();
                    List<SongRespones.Songs> selectedSingersSongs = new Arraylist();
                    for (SongRespones.Songs songs : listSong) {
                        if (songs.getSinger().getId() == getSingerId) {
                            Log.e(LOG, songs + "");
                            selectedSingersSongs.add(songs);
                        }
                    }                    
                    adapter.addMoreItem(selectedSingersSongs);
    

    And of course you should recyclerView.setAdapter(adapter); before