我是一个非常菜鸟用户,我试图在我的Android应用中播放Spotify中的一些曲目。目前,我正在使用kaaes API: https://github.com/kaaes/spotify-web-api-android
,我正在努力从非常具体的播放列表和非常具体的userId中检索曲目。看来我做不到,我发现的唯一例子是古老的,对我没有帮助。这是我尝试过的:
Accessing list of playlists from Pager object
SpotifyApi api = new SpotifyApi();
SpotifyService spotify = api.getService();
spotify.getPlaylistTracks("USERID","PLAYLISTID", new Callback<Pager<PlaylistTrack>>() {
@Override
public void success(Pager<PlaylistTrack> playlistTrackPager, Response response) {
Log.e("TEST", "GOT the tracks in playlist");
List<PlaylistTrack> items = playlistTrackPager.items;
for( PlaylistTrack pt : items){
Log.e("TEST", pt.track.name + " - " + pt.track.id);
}
}
@Override
public void failure(RetrofitError error) {
Log.e("TEST", "Could not get playlist tracks");
}
});
它会亮起红色的Callback(当我调用新的Callback>()时),并显示:无法解析符号“ Callback” 如果我alt + enter点击它,它说:将库'retrofit-2.4.0.retrofit-2.4.0'添加到classpath 如果执行此操作,则它会突出显示所有Callback>,并显示错误:
然后我再次alt + enter并说:类'从Callback派生的匿名类'必须声明为抽象,或在'Callback'中实现抽象方法'onResponse(Call,Response) >
然后我再次按住Alt键并单击,然后选择:实现方法onResponse()和onFailure() 然后使用新方法调整旧代码,使其成为:
spotify.getPlaylistTracks("USERID","PLAYLISTID", new Callback<Pager<PlaylistTrack>>() {
@Override
public void onResponse(Call<Pager<PlaylistTrack>> playlistTrackPager, Response<Pager<PlaylistTrack>> response) {
Log.e("TEST", "GOT the tracks in playlist");
List<PlaylistTrack> items = playlistTrackPager.items;
for( PlaylistTrack pt : items){
Log.e("TEST", pt.track.name + " - " + pt.track.id);
}
}
@Override
public void onFailure(Call<Pager<PlaylistTrack>> call, Throwable t) {
Log.e("TEST", "Could not get playlist tracks");
}
});
但是现在,.items变成红色并显示:无法解析符号“ items” 我在网上找不到有关此内容的任何信息。似乎我无法使用新的API方法适应发现的旧代码示例。
谢谢
答案 0 :(得分:1)
您截断的第一个代码在我的测试项目中没有显示任何错误。我想导入重叠或其他库存在问题。
如果添加以下导入并删除其他改造/ kaaes导入,请检查是否可行:
import kaaes.spotify.webapi.android.SpotifyApi;
import kaaes.spotify.webapi.android.SpotifyService;
import kaaes.spotify.webapi.android.models.Pager;
import kaaes.spotify.webapi.android.models.PlaylistTrack;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
如果这不起作用,请从您的类路径/项目中删除Retrofit 2库,然后重试,因为此包装程序仍使用Retrofit 1.9.0。