我正在研究一個我在github上找到的小型Android播放器。在Android應用中顯示Deezer用戶播放列表
我設法編譯了代碼,但我使用的是0.10.16 SDK。看起來github上的玩家是爲之前的版本編寫的。
我可以登錄,但是當我在播放列表點擊主屏幕和波紋管執行的代碼,我得到了一個空白屏幕:
private void getUserPlaylists() {
DeezerRequest request = DeezerRequestFactory.requestCurrentUserPlaylists();
AsyncDeezerTask task = new AsyncDeezerTask(mDeezerConnect,
new JsonRequestListener() {
@SuppressWarnings("unchecked")
@Override
public void onResult(final Object result, final Object requestId) {
mPlaylistList.clear();
try {
mPlaylistList.addAll((List<Playlist>) result);
}
catch (ClassCastException e) {
handleError(e);
}
if (mPlaylistList.isEmpty()) {
Toast.makeText(UserPlaylistsActivity.this, getResources()
.getString(R.string.no_results), Toast.LENGTH_LONG).show();
}
mPlaylistAdapter.notifyDataSetChanged();
}
@Override
public void onComplete(final String response, Object requestId) {
//TODO
Toast.makeText(UserPlaylistsActivity.this, "Playlist_onComplete",
Toast.LENGTH_LONG).show();
}
@Override
public void onUnparsedResult(final String response, Object requestId) {
//TODO
}
@Override
public void onException(Exception exception, Object requestId) {
if(exception instanceof OAuthException){
handleError(exception);
}
else if(exception instanceof MalformedURLException){
handleError(exception);
}
else if(exception instanceof IOException){
handleError(exception);
}
else if(exception instanceof DeezerError){
handleError(exception);
}
else if(exception instanceof JSONException){
handleError(exception);
}
else{
//do nothing
}
}
});
task.execute(request);
}
我想原因是,上面的代碼是爲寫以前的SDK版本,顯然與「onResult」一起工作。然而,最新的SDK使用「onComplete」,它返回一個未解析的JSON字符串。
我的問題是:
- 有內置的SDK一類,將解析JSON響應
- 在那裏將接受解析響應
- 一類是有一個功能,將在屏幕上顯示
我正在查看文檔,但沒有找到任何有用的東西。
有沒有人用最新的SDK實現這一點?
編輯:
private void getUserPlaylists() {
DeezerRequest request = DeezerRequestFactory.requestCurrentUserPlaylists();
AsyncDeezerTask task = new AsyncDeezerTask(mDeezerConnect,
new JsonRequestListener() {
@SuppressWarnings("unchecked")
@Override
public void onResult(final Object result, final Object requestId) {
mPlaylistList.clear();
try {
mPlaylistList.addAll((List<Playlist>) result);
}
catch (ClassCastException e) {
handleError(e);
}
if (mPlaylistList.isEmpty()) {
Toast.makeText(UserPlaylistsActivity.this, getResources()
.getString(R.string.no_results), Toast.LENGTH_LONG).show();
}
mPlaylistAdapter.notifyDataSetChanged();
}
@Override
public void onUnparsedResult(final String response, Object requestId) {
//TODO
}
@Override
public void onException(Exception exception, Object requestId) {
if(exception instanceof OAuthException){
handleError(exception);
}
else if(exception instanceof MalformedURLException){
handleError(exception);
}
else if(exception instanceof IOException){
handleError(exception);
}
else if(exception instanceof DeezerError){
handleError(exception);
}
else if(exception instanceof JSONException){
handleError(exception);
}
else{
//do nothing
}
}
});
task.execute(request);
}
這現在與0.10.16 SDK。刪除onComplete()並且所有數據現在都正確解析。菜單正常,播放成功。
是的,那是一個伎倆。該應用現在可以正常工作。謝謝! – iggy