java - 无法使用 kaaes Spotify Web api 获取播放列表的轨道

标签 java android api spotify

我是一个非常菜鸟的用户,我正在尝试在我的 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/

相关文章:

java - Lotus Notes 代理 - 在数据库上注册代理

java - 如何在 Emacs 中为 Android 开发?

android - 为什么不是每个人都使用 ViewGroup.LayoutParams 而不是 LinearLayout.LayoutParams?

api - Magento 1.7 REST API nginx 重写规则。 api.php 没有执行

java - 是否可以查看 API 类的源代码?

Java GUI - 从数组中获取随机值

java - 从 maven 程序集描述符中的 jars 中排除包

java - 如何对编辑文本记录的数据进行操作

android - RecyclerView 中的 ViewPager 作为行项目

c# - 无法将字符串作为 HTTPContent 发送