LeHe開發日誌

開發日誌<二>——笑話模塊總結

笑話功能很簡單,就是一個列表顯示從網絡上獲取的20條笑話,這裏有以下幾個知識點需要注意:
<->.MVP +Dragger2模式的使用
這裏參考了google的MVP+dragger2的demo,直接在presenter的構造方法上使用@Inject,而在fragment中直接通過Componment來獲取presenter對象,在Module中不再去提供Presenter對象。不廢話,直接貼代碼。
JokerModule.class

@Module
public class JokerModule {
    private final JokerContract.View mView;

    public JokerModule(JokerContract.View view) {
        mView = view;
    }

    @Provides
    JokerContract.View provideTasksContractView() {
        return mView;
    }
}

JokerComponent.class

@Subcomponent(modules = JokerModule.class)
public interface JokerComponent {
    JokerPresenter getJokerPresenter();
}

JokerPresenter.class


public class JokerPresenter implements JokerContract.UserActionsListener {

    private APIManager mAPIManager;
    private JokerContract.View mView;
    PreferencesManager mPreferencesManager;
    @Inject
    JokerPresenter(APIManager apiManager,JokerContract.View view,PreferencesManager preferencesManager){
        mAPIManager = apiManager;
        mView =view;
        mPreferencesManager=preferencesManager;
    }

在Fragment中獲取Presenter對象

        mPresenter = LeHeApp.get(getActivity()).getAppComponent().plus(new JokerModule(this)).getJokerPresenter();

還有就是參考Google的Demo,將MVP模式中的view 和Presenter的接口放在一個JokerContract類中。
Google的Demo入口
<二>.針對多重JSON返回的解析也做了下處理。初始化retrofit:

 Retrofit.Builder builder = new Retrofit.Builder();
        builder.client(okHttpClient)
                .baseUrl(ApiService.SERVER_URL)
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create());

這裏已經添加了GsonConverterFactory,所以我將retroft返回的泛型改爲Gson的 JsonObject類型,然後在收到的result中獲取Joker對象。

 @GET("showapi_open_bus/showapi_joke/joke_text")
    Observable<JsonObject> getJokersYY(@Header("apikey") String apikey, @Query("page")

以上就是笑話模塊的總結,目前只是做到獲取數據並顯示出來,後期打算增加本地數據庫功能,將獲取到笑話保存在本地,每次下來刷新從服務器獲取最新的,再增加加載更多,則是從本地數據庫中獲取。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章