Presenter 類
public class OnSalePagePresenter implements IOnSalePagePresenter {
private int mCurrentPage = 1;
private IOnSalePageCallback onSalePageCallback = null;
public Api api;
public OnSalePagePresenter(){
/**
* 這邊的話也是回傳retrofit的單例
*/
Retrofit retrofit = RetrofitManager.getInstance().getRetrofit();
api = retrofit.create(Api.class);
/**
* 這邊的log也打不出來
*/
Log.d("OnSalePagePresenter", "onSalePagePresenter is created" );
}
@Override
public void getContent() {
//獲取特惠內容:
if (onSalePageCallback!=null) {
onSalePageCallback.onLoading();
}
/**
主要問題是這個為什么我的代碼根本就不進去,里面的log根本就打不出來。
*/
String onsalePageUrl = UrlUtils.getOnsalePageUrl(mCurrentPage);
Call<OnSaleContent> task = api.getOnSalePageContent(onsalePageUrl);
task.enqueue(new Callback<OnSaleContent>() {
@Override
public void onResponse(Call<OnSaleContent> call, Response<OnSaleContent> response) {
int code = response.code();
Log.d("OnSalePagePresenter" , "getContent---->" + code );
if (code== HttpURLConnection.HTTP_OK) {
OnSaleContent body = response.body();
onSuccess(body);
Log.d("OnSalePagePresenter" ,"OnSaleContent---->" + body );
}else{
if (onSalePageCallback!=null) {
onSalePageCallback.onNetworkError();
}
}
}
@Override
public void onFailure(Call<OnSaleContent> call, Throwable t) {
if (onSalePageCallback!=null) {
onSalePageCallback.onNetworkError();
}
}
});
}
private void onSuccess(OnSaleContent body) {
if (onSalePageCallback!=null) {
try{
int size = body.getData().getTbk_dg_optimus_material_response().getResult_list().getMap_data().size();
if (size==0) {
onEmppty();
}else{
onSalePageCallback.onContentLoadSuccess(body);
}
}catch (Exception e){
e.printStackTrace();
onEmppty();
}
}
}
private void onEmppty(){
if (onSalePageCallback!=null) {
onSalePageCallback.onEmpty();
}
}
@Override
public void reLoad() {
this.getContent();
}
@Override
public void LoadMore() {
mCurrentPage++;
String url = UrlUtils.getOnsalePageUrl(mCurrentPage);
Call<OnSaleContent> task = api.getOnSalePageContent(url);
task.enqueue(new Callback<OnSaleContent>() {
@Override
public void onResponse(Call<OnSaleContent> call, Response<OnSaleContent> response) {
int code = response.code();
if (code== HttpURLConnection.HTTP_OK) {
OnSaleContent body = response.body();
onMoreLoaded(body);
}else{
onLoadMoreError();
}
}
@Override
public void onFailure(Call<OnSaleContent> call, Throwable t) {
onLoadMoreError();
}
});
}
private void onLoadMoreError() {
mCurrentPage--;
onSalePageCallback.onMoreLoadError();
}
private void onMoreLoaded(OnSaleContent body) {
if (onSalePageCallback!=null) {
try{
int size = body.getData().getTbk_dg_optimus_material_response().getResult_list().getMap_data().size();
if (size==0) {
onEmppty();
}else{
// onSalePageCallback.onContentLoadSuccess(body);
}
}catch (Exception e){
e.printStackTrace();
onEmppty();
}
}
}
@Override
public void registerViewCallback(IOnSalePageCallback callback) {
this.onSalePageCallback = callback;
}
@Override
public void unregisterViewCallback(IOnSalePageCallback callback) {
this.onSalePageCallback = null;
}
}
UI層的fragment
public class OnSaleFragment extends BaseFragment implements IOnSalePageCallback {
@BindView(R.id.on_sale_list)
public RecyclerView onSaleList;
public OnSalePageAdapter onSalePageAdapter;
public OnSalePagePresenter onSalePagePresenter;
@Override
protected void initPresenter() {
super.initPresenter();
/**
這里是有個PresenterManager類里面回傳各個fragment中presenter的單例
*/
onSalePagePresenter = PresenterManager.getInstance().getOnSalePagePresenter();
onSalePagePresenter.registerViewCallback(this);
onSalePagePresenter.getContent();
}
@Override
protected int getRootVireResId() {
/**
*/
Log.d("OnSaleFragment", "fragment_red_packet is created" );
return R.layout.fragment_red_packet;
}
@Override
protected void initView(View rootView) {
setUpState(State.SUCCESS);
onSalePageAdapter = new OnSalePageAdapter();
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(),2);
onSaleList.setLayoutManager(gridLayoutManager);
onSaleList.setAdapter(onSalePageAdapter);
}
@Override
public void onContentLoadSuccess(OnSaleContent content) {
//資料回來:
Log.d("OnSaleFragment", "OnSaleContent" + content );
onSalePageAdapter.setData(content);
}
@Override
public void onMoreloaded(OnSaleContent content) {
}
@Override
public void onMoreLoadError() {
}
@Override
public void onMoreLoadEmpty() {
}
@Override
public void onNetworkError() {
}
@Override
public void onLoading() {
}
@Override
public void onEmpty() {
}
}
這邊跟著b站做專案。前面幾個fragment都是照著這么寫的,但是不知道這個為什么我這邊在Presenter類里面的log都打不出來。里面的 int code本來是我用來確認是否連接成功的,結果現在啥也看不到。后續UI那邊設定adapter也不成功是肯定的。請問會有可能是介面改變了所以我這邊什么都沒有嗎?因為怕太長所以沒有全部貼出來,如果有大佬需要看的,我在后面貼出來。謝謝大家。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/234053.html
標籤:Android
