package com.werb.gankwithzhihu.ui.base; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.werb.gankwithzhihu.R; import butterknife.ButterKnife; /** * Created by Werb on 2016/7/27. * Werb is Wanbo. * Contact Me : werbhelius@gmail.com * Base of Fragment */ public abstract class MVPBaseFragment<V, T extends BasePresenter<V>> extends Fragment { protected T mPresenter; private boolean mIsRequestDataRefresh = false; private SwipeRefreshLayout mRefreshLayout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mPresenter = createPresenter(); mPresenter.attachView((V) this); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(createViewLayoutId(),container,false); ButterKnife.bind(this,rootView); initView(rootView); if(isSetRefresh()) { setupSwipeRefresh(rootView); } return rootView; } @Override public void onDestroy() { super.onDestroy(); mPresenter.detachView(); } private void setupSwipeRefresh(View view){ mRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_refresh); if(mRefreshLayout != null){ mRefreshLayout.setColorSchemeResources(R.color.refresh_progress_1, R.color.refresh_progress_2,R.color.refresh_progress_3); mRefreshLayout.setProgressViewOffset(true, 0, (int) TypedValue .applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24,getResources().getDisplayMetrics())); mRefreshLayout.setOnRefreshListener(this::requestDataRefresh); } } public void requestDataRefresh() { mIsRequestDataRefresh = true; } public void setRefresh(boolean requestDataRefresh) { if (mRefreshLayout == null) { return; } if (!requestDataRefresh) { mIsRequestDataRefresh = false; mRefreshLayout.postDelayed(() -> { if (mRefreshLayout != null) { mRefreshLayout.setRefreshing(false); } }, 1000); } else { mRefreshLayout.setRefreshing(true); } } protected abstract T createPresenter(); protected abstract int createViewLayoutId(); protected void initView(View rootView){} public Boolean isSetRefresh(){ return true; } }