我是一个非常菜鸟的用户,我正在尝试在我的 Android 应用程序中播放 Spotify 中的一些轨道。目前我正在使用 kaaes API: https://github.com/kaaes/spotify-web-api-android
我正在努力从一个非常具体的播放列表和一个非常具体的用户 ID 中检索轨道。看来我无法做到这一点,我找到的唯一例子已经过时了,对我没有帮助。这是我尝试过的:
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");
}
});
它会亮起红色回调(当我调用 new Callback<Pager<PlaylistTrack>>()
时)并显示:
Cannot resolve symbol 'Callback'
如果我按 alt+enter 单击它,它会显示:
Add library 'retrofit-2.4.0.retrofit-2.4.0' to classpath
如果我这样做,那么它会强调所有 Callback<Pager<PlaylistTrack>>
,有错误:
然后我再次按 alt+enter,它显示:
Class 'Anonymous Class derived from Callback' must either be declared abstract or implement abstract method 'onResponse(Call, Response) in 'Callback'
然后我再次单击 Alt+Enter,然后选择:Implements methods onResponse() and 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
呈红色亮起并说道:
Cannot resolve symbol 'items'
我在网上找不到任何与此相关的信息。看来我无法将我找到的旧代码示例与新的 API 方法相匹配。
谢谢
最佳答案
您截取的第一个代码在我的测试项目中没有显示任何错误。我猜想重叠导入或其他库存在问题。
如果您添加以下导入并删除其他改造/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。
关于java - 无法使用 kaaes Spotify Web api 获取播放列表的轨道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52802015/