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;
}
}