theMVP -------------------- mvp探索
详细地址
https://github.com/kymjs/TheMVP
public interface IDelegate {
void initData();
void create(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle);
View RootView();
void getContext(Context context);
}
//定义接口实现类
public abstract class AppDelegate implements IDelegate {
private View rootView;
@Override
public void create(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) {
rootView = inflater.inflate( getLayoutId(), null, false );
}
protected abstract int getLayoutId();
@Override
public View RootView() {
return rootView;
}
SparseArray<View> views = new SparseArray<View>();
public <T extends View> T get(int id) {
T view = (T) views.get( id );
if (view == null) {
view = rootView.findViewById( id );
views.get( id, view );
}
return view;
}
public void setClick(View.OnClickListener listener, int... ids) {
if (ids == null)
return;
for (int id :
ids) {
get( id ).setOnClickListener(listener);
}
}
//BaseActivityPresenter
public abstract class BaseActivityPresenter<T extends IDelegate> extends AppCompatActivity {
public T delegateActivity;
public abstract Class<T> getClassPresenterActivity();
public BaseActivityPresenter() {
try {
delegateActivity = getClassPresenterActivity().newInstance();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
delegateActivity.create( getLayoutInflater(),null ,savedInstanceState);
setContentView( delegateActivity.RootView() );
delegateActivity.getContext( this );
delegateActivity.initData();
}
}
//BaseFragmentPresenter
public abstract class BaseFragmentPresenter<T extends IDelegate> extends Fragment {
public abstract Class<T> getClassPresenterFragment();
public T delegateFragment;
public BaseFragmentPresenter() {
try {
delegateFragment = getClassPresenterFragment().newInstance();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (java.lang.InstantiationException e) {
e.printStackTrace();
}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//加载视图
delegateFragment.create( getLayoutInflater(), container, savedInstanceState );
return delegateFragment.RootView();
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated( savedInstanceState );
//获取上下文
delegateFragment.getContext( getActivity() );
//加载数据
delegateFragment.initData();
}
@Override
public void onResume() {
super.onResume();
}