2017-07-23 39 views
0

我想從web使用翻新和rxAndroid獲取值,但onNext不會調用。 在這裏,我的課:onNext未被稱爲Retrofit和rxAndroid

public class ForumService { 

private static final String FORUM_SERVER_URL = "http://192.168.1.104:8080/curso-fullstack/symfony/web"; 
private ForumApi mForumApi; 


public ForumService(){ 
    RequestInterceptor requestInterceptor = new RequestInterceptor() { 
     @Override 
     public void intercept(RequestFacade request) { 
      request.addHeader("Accept", "application/json"); 
     } 
    }; 

    RestAdapter restAdapter = new RestAdapter.Builder() 
      .setEndpoint(FORUM_SERVER_URL) 
      .setRequestInterceptor(requestInterceptor) 
      .setLogLevel(RestAdapter.LogLevel.FULL) 
      .build(); 

    mForumApi = restAdapter.create(ForumApi.class); 

} 

public ForumApi getmForumApi() { 
    return mForumApi; 
} 

public interface ForumApi{ 

    @GET("/video/lasts_videos") 
    public Observable<List<Data>> getVideos(); 

    /*@GET("/posts/{id}") 
    public Observable<Post> 
    getPost(@Path("id") int postId); 

    @GET("/comments") 
    public Observable<List<Comment>> 
    getComments(@Query("postId") int postId); 

    @POST("/posts") 
    public Observable<Post> postPost(Post post);*/ 
} 

}

public class ListPresenter { 

ListActivity mView; 
ForumService mForum; 

public ListPresenter(ListActivity mView, ForumService mForum) { 
    this.mView = mView; 
    this.mForum = mForum; 
} 

public void loadPosts() { 

    mForum.getmForumApi() 
      .getVideos() 
      .subscribeOn(Schedulers.newThread()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(new Observer<List<Data>>() { 
       @Override 
       public void onCompleted() { 

       } 

       @Override 
       public void onError(Throwable e) { 

       } 

       @Override 
       public void onNext(List<Data> posts) { 

        mView.displayPosts(posts); 
       } 
      }); 
} 

}

然後,我從我的活動執行方法loadPosts(),填補一個ListView列表和顯示。 如果我查看Android日誌,我可以看到改造顯示給我的結果,但是出於任何原因,onNext永遠不會被調用。

enter image description here

+0

如果'onNext'未被調用,可能會調用'onError'。將'e.printStackTrace()'添加到'onError' – LordRaydenMK

+0

你很可靠,但不知道如何解決我有以下錯誤,我知道是什麼意思,但我是新的改造和rxandroid。 錯誤:> com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:預期BEGIN_ARRAY,但在BEGIN_OBJECT行1列2路徑$ –

+1

您的模型 - 列表'不對應於接收到的JSON。您可以將JSON響應複製到http://www.jsonschema2pojo.org/以爲您生成模型類。 – LordRaydenMK

回答

1

從評論的討論:

onNext wan't被稱爲,因爲有在反序列化JSON的一個問題。代替調用onError