提交 15d3b8cd 编写于 作者: 门心叼龙's avatar 门心叼龙

add dagger2

上级 61a04465
此差异已折叠。
......@@ -40,7 +40,6 @@ public abstract class BaseActivity extends RxAppCompatActivity implements BaseVi
protected NoDataView mNoDataView;
protected LoadingInitView mLoadingInitView;
protected LoadingTransView mLoadingTransView;
private boolean isrefresh = false;
private ViewStub mViewStubToolbar;
private ViewStub mViewStubContent;
private ViewStub mViewStubInitLoading;
......
......@@ -6,6 +6,8 @@ import android.support.annotation.Nullable;
import com.fly.tour.common.mvp.BaseModel;
import com.fly.tour.common.mvp.BasePresenter;
import javax.inject.Inject;
/**
* Description: <BaseMvpActivity><br>
* Author: gxl<br>
......@@ -14,18 +16,18 @@ import com.fly.tour.common.mvp.BasePresenter;
* Update: <br>
*/
public abstract class BaseMvpActivity<M extends BaseModel,V,P extends BasePresenter<M,V>> extends BaseActivity {
@Inject
protected P mPresenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
mPresenter = initPresenter();
injectPresenter();
if(mPresenter != null){
mPresenter.attach((V) this);
mPresenter.injectLifecycle(this);
}
super.onCreate(savedInstanceState);
}
public abstract P initPresenter();
public abstract void injectPresenter();
@Override
protected void onDestroy() {
......
......@@ -6,6 +6,8 @@ import android.support.annotation.Nullable;
import com.fly.tour.common.mvp.BaseModel;
import com.fly.tour.common.mvp.BasePresenter;
import javax.inject.Inject;
/**
* Description: <BaseMvpFragment><br>
* Author: gxl<br>
......@@ -14,13 +16,13 @@ import com.fly.tour.common.mvp.BasePresenter;
* Update: <br>
*/
public abstract class BaseMvpFragment<M extends BaseModel,V,P extends BasePresenter<M,V>> extends BaseFragment {
@Inject
protected P mPresenter;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPresenter = initPresenter();
injectPresenter();
if(mPresenter != null){
mPresenter.attach((V) this);
mPresenter.injectLifecycle(mActivity);
}
}
......@@ -32,5 +34,5 @@ public abstract class BaseMvpFragment<M extends BaseModel,V,P extends BasePresen
}
super.onDestroy();
}
public abstract P initPresenter();
public abstract void injectPresenter();
}
package com.fly.tour.common.dagger.base;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewStub;
import android.widget.TextView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.fly.tour.common.R;
import com.fly.tour.common.event.common.BaseActivityEvent;
import com.fly.tour.common.manager.ActivityManager;
import com.fly.tour.common.mvp.BaseView;
import com.fly.tour.common.util.NetUtil;
import com.fly.tour.common.view.LoadingInitView;
import com.fly.tour.common.view.LoadingTransView;
import com.fly.tour.common.view.NetErrorView;
import com.fly.tour.common.view.NoDataView;
import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
/**
* Description: <BaseActivity><br>
* Author: gxl<br>
* Date: 2018/1/16<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public abstract class BaseActivity extends RxAppCompatActivity implements BaseView {
protected static final String TAG = BaseActivity.class.getSimpleName();
protected TextView mTxtTitle;
protected Toolbar mToolbar;
protected NetErrorView mNetErrorView;
protected NoDataView mNoDataView;
protected LoadingInitView mLoadingInitView;
protected LoadingTransView mLoadingTransView;
private ViewStub mViewStubToolbar;
private ViewStub mViewStubContent;
private ViewStub mViewStubInitLoading;
private ViewStub mViewStubTransLoading;
private ViewStub mViewStubNoData;
private ViewStub mViewStubError;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_root);
initCommonView();
ARouter.getInstance().inject(this);
initView();
initListener();
initData();
EventBus.getDefault().register(this);
ActivityManager.getInstance().addActivity(this);
}
protected void initCommonView() {
mViewStubToolbar = findViewById(R.id.view_stub_toolbar);
mViewStubContent = findViewById(R.id.view_stub_content);
mViewStubContent = findViewById(R.id.view_stub_content);
mViewStubInitLoading = findViewById(R.id.view_stub_init_loading);
mViewStubTransLoading = findViewById(R.id.view_stub_trans_loading);
mViewStubError = findViewById(R.id.view_stub_error);
mViewStubNoData = findViewById(R.id.view_stub_nodata);
if (enableToolbar()) {
mViewStubToolbar.setLayoutResource(onBindToolbarLayout());
View view = mViewStubToolbar.inflate();
initToolbar(view);
}
mViewStubContent.setLayoutResource(onBindLayout());
mViewStubContent.inflate();
}
protected void initToolbar(View view) {
mToolbar = view.findViewById(R.id.toolbar_root);
mTxtTitle = view.findViewById(R.id.toolbar_title);
if (mToolbar != null) {
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
}
@Override
protected void onTitleChanged(CharSequence title, int color) {
super.onTitleChanged(title, color);
if (mTxtTitle != null && !TextUtils.isEmpty(title)) {
mTxtTitle.setText(title);
}
//可以再次覆盖设置title
String tootBarTitle = getTootBarTitle();
if (mTxtTitle != null && !TextUtils.isEmpty(tootBarTitle)) {
mTxtTitle.setText(tootBarTitle);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
ActivityManager.getInstance().finishActivity(this);
}
public int onBindToolbarLayout() {
return R.layout.common_toolbar;
}
public abstract int onBindLayout();
public abstract void initView();
public abstract void initData();
public void initListener() {
}
@Override
public void finishActivity() {
finish();
}
public String getTootBarTitle() {
return "";
}
public boolean enableToolbar() {
return true;
}
public void showInitLoadView() {
showInitLoadView(true);
}
public void hideInitLoadView() {
showInitLoadView(false);
}
@Override
public void showTransLoadingView() {
showTransLoadingView(true);
}
@Override
public void hideTransLoadingView() {
showTransLoadingView(false);
}
public void showNoDataView() {
showNoDataView(true);
}
public void showNoDataView(int resid) {
showNoDataView(true, resid);
}
public void hideNoDataView() {
showNoDataView(false);
}
public void hideNetWorkErrView() {
showNetWorkErrView(false);
}
public void showNetWorkErrView() {
showNetWorkErrView(true);
}
private void showInitLoadView(boolean show) {
if (mLoadingInitView == null) {
View view = mViewStubInitLoading.inflate();
mLoadingInitView = view.findViewById(R.id.view_init_loading);
}
mLoadingInitView.setVisibility(show ? View.VISIBLE : View.GONE);
mLoadingInitView.loading(show);
}
private void showNetWorkErrView(boolean show) {
if (mNetErrorView == null) {
View view = mViewStubError.inflate();
mNetErrorView = view.findViewById(R.id.view_net_error);
mNetErrorView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!NetUtil.checkNetToast()) {
return;
}
hideNetWorkErrView();
initData();
}
});
}
mNetErrorView.setVisibility(show ? View.VISIBLE : View.GONE);
}
private void showNoDataView(boolean show) {
if (mNoDataView == null) {
View view = mViewStubNoData.inflate();
mNoDataView = view.findViewById(R.id.view_no_data);
}
mNoDataView.setVisibility(show ? View.VISIBLE : View.GONE);
}
private void showNoDataView(boolean show, int resid) {
showNoDataView(show);
if (show) {
mNoDataView.setNoDataView(resid);
}
}
private void showTransLoadingView(boolean show) {
if (mLoadingTransView == null) {
View view = mViewStubTransLoading.inflate();
mLoadingTransView = view.findViewById(R.id.view_trans_loading);
}
mLoadingTransView.setVisibility(show ? View.VISIBLE : View.GONE);
mLoadingTransView.loading(show);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public <T> void onEvent(BaseActivityEvent<T> event) {
}
@Override
public Context getContext() {
return this;
}
}
package com.fly.tour.common.dagger.base;
import android.os.Bundle;
import android.support.annotation.Nullable;
import com.fly.tour.common.dagger.mvp.BaseModel;
import com.fly.tour.common.dagger.mvp.BasePresenter;
import javax.inject.Inject;
/**
* Description: <BaseMvpActivity><br>
* Author: gxl<br>
* Date: 2018/1/16<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public abstract class BaseMvpActivity<M extends BaseModel,V,P extends BasePresenter<M,V>> extends BaseActivity {
@Inject
public P mPresenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
injectPresenter();
if(mPresenter != null){
mPresenter.injectLifecycle(this);
}
super.onCreate(savedInstanceState);
}
public abstract void injectPresenter();
@Override
protected void onDestroy() {
super.onDestroy();
if(mPresenter != null){
mPresenter.detach();
}
}
}
package com.fly.tour.common.dagger.base;
import com.fly.tour.common.dagger.mvp.BaseModel;
import com.fly.tour.common.dagger.mvp.BaseRefreshPresenter;
import com.fly.tour.common.dagger.mvp.BaseRefreshView;
import com.refresh.lib.BaseRefreshLayout;
import com.refresh.lib.DaisyRefreshLayout;
/**
* Description: <下拉刷新、上拉加载更多的Activity><br>
* Author: gxl<br>
* Date: 2018/2/26<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public abstract class BaseRefreshActivity<M extends BaseModel, V extends BaseRefreshView<T>, P extends BaseRefreshPresenter<M, V, T>, T> extends BaseMvpActivity<M, V, P> implements BaseRefreshView<T> {
protected DaisyRefreshLayout mRefreshLayout;
@Override
protected void initCommonView() {
super.initCommonView();
initRefreshView();
}
public void initRefreshView() {
mRefreshLayout = findViewById(onBindRreshLayout());
// 下拉刷新
mRefreshLayout.setOnRefreshListener(new BaseRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
onRefreshEvent();
}
});
// 上拉加载
mRefreshLayout.setOnLoadMoreListener(new BaseRefreshLayout.OnLoadMoreListener() {
@Override
public void onLoadMore() {
onLoadMoreEvent();
}
});
// 自动加载
mRefreshLayout.setOnAutoLoadListener(new BaseRefreshLayout.OnAutoLoadListener() {
@Override
public void onAutoLoad() {
onAutoLoadEvent();
}
});
}
protected abstract int onBindRreshLayout();
@Override
public void enableRefresh(boolean b) {
mRefreshLayout.setEnableRefresh(b);
}
@Override
public void enableLoadMore(boolean b) {
mRefreshLayout.setEnableLoadMore(b);
}
@Override
public void stopRefresh() {
mRefreshLayout.setRefreshing(false);
}
@Override
public void stopLoadMore() {
mRefreshLayout.setLoadMore(false);
}
@Override
public void autoLoadData() {
mRefreshLayout.autoRefresh();
}
}
package com.fly.tour.common.dagger.mvp;
import android.content.Context;
import com.trello.rxlifecycle2.LifecycleProvider;
import javax.inject.Inject;
/**
* Description: <BaseModel><br>
* Author: gxl<br>
* Date: 2018/3/18<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public class BaseModel {
private Context mContext;
public BaseModel(Context context) {
mContext = context;
}
private LifecycleProvider lifecycle;
public void injectLifecycle(LifecycleProvider lifecycle) {
this.lifecycle = lifecycle;
}
public LifecycleProvider getLifecycle() {
return lifecycle;
}
public Context getContext() {
return mContext;
}
public void destory(){}
}
package com.fly.tour.common.dagger.mvp;
import android.content.Context;
import com.trello.rxlifecycle2.LifecycleProvider;
import javax.inject.Inject;
/**
* Description: <BasePresenter><br>
* Author: gxl<br>
* Date: 2018/1/15<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public abstract class BasePresenter<M extends BaseModel, V> {
protected Context mContext;
protected V mView;
protected M mModel;
public BasePresenter(Context context,V view, M model) {
this.mContext = context;
mView = view;
mModel = model;
}
public BasePresenter(Context context) {
mContext = context;
}
public void detach() {
detachView();
detachModel();
}
public void detachView() {
mView = null;
}
public void detachModel() {
mModel.destory();
mModel = null;
}
public void injectLifecycle(LifecycleProvider lifecycle) {
if (mModel != null) {
mModel.injectLifecycle(lifecycle);
}
}
}
package com.fly.tour.common.dagger.mvp;
import com.fly.tour.common.mvp.BaseView;
/**
* Description: <基本的刷新数据协议><br>
* Author: gxl<br>
* Date: 2018/2/25<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public interface BaseRefreshContract {
interface Presenter {
/**
* 刷新数据
*/
void refreshData();
/**
* 加载更多
*/
void loadMoreData();
}
interface View extends BaseView{
/**
* 是否启用下拉刷新
* @param b
*/
void enableRefresh(boolean b);
/**
*是否启用上拉加载更多
*/
void enableLoadMore(boolean b);
/**
*刷新回调
*/
void onRefreshEvent();
/**
* 加载更多的回调
*/
void onLoadMoreEvent();
/**
* 自动加载的事件
*/
void onAutoLoadEvent();
/**
* 停止刷新
*/
void stopRefresh();
/**
* 停止加载更多
*/
void stopLoadMore();
/**
* 自动加载数据
*/
void autoLoadData();
}
}
package com.fly.tour.common.dagger.mvp;
import android.content.Context;
/**
* Description: <BaseRefreshPresenter><br>
* Author: gxl<br>
* Date: 2018/2/26<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public abstract class BaseRefreshPresenter<M extends BaseModel,V extends BaseRefreshView<T>,T> extends BasePresenter<M,V> implements BaseRefreshContract.Presenter{
public BaseRefreshPresenter(Context context) {
super(context);
}
}
package com.fly.tour.common.dagger.mvp;
import com.fly.tour.common.mvp.BaseRefreshContract;
import java.util.List;
/**
* Description: <BaseRefreshView><br>
* Author: gxl<br>
* Date: 2018/2/26<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public interface BaseRefreshView<T> extends BaseRefreshContract.View {
//刷新数据
void refreshData(List<T> data);
//加载更多
void loadMoreData(List<T> data);
}
......@@ -17,39 +17,25 @@ public abstract class BasePresenter<M extends BaseModel, V> {
protected V mView;
protected M mModel;
public BasePresenter(Context context) {
public BasePresenter(Context context, V view, M model) {
mContext = context;
mView = view;
mModel = model;
}
public void attach(V view) {
attachView(view);
attachModel();
}
public void detach() {
detachView();
detachModel();
}
public void attachView(V view) {
mView = view;
}
public void detachView() {
mView = null;
}
public void attachModel() {
mModel = initModel();
}
public void detachModel() {
mModel.destory();
mModel = null;
}
public abstract M initModel();
public void injectLifecycle(LifecycleProvider lifecycle) {
if (mModel != null) {
mModel.injectLifecycle(lifecycle);
......
......@@ -10,7 +10,8 @@ import android.content.Context;
* Update: <br>
*/
public abstract class BaseRefreshPresenter<M extends BaseModel,V extends BaseRefreshView<T>,T> extends BasePresenter<M,V> implements BaseRefreshContract.Presenter{
public BaseRefreshPresenter(Context context) {
super(context);
public BaseRefreshPresenter(Context context, V view, M model) {
super(context, view, model);
}
}
......@@ -12,6 +12,8 @@ import com.fly.tour.db.entity.NewsType;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
/**
* Description: <NewsTypeDao><br>
* Author: gxl<br>
......@@ -21,7 +23,7 @@ import java.util.List;
*/
public class NewsTypeDao {
private SQLiteDatabase mDatabase;
@Inject
public NewsTypeDao(Context context) {
mDatabase = NewsDBHelper.getInstance(context).getReadableDatabase();
}
......
......@@ -11,6 +11,8 @@ import com.fly.tour.common.util.ToastUtil;
import com.fly.tour.common.view.SettingBarView;
import com.fly.tour.db.entity.NewsType;
import com.fly.tour.me.contract.NewsDetailAddContract;
import com.fly.tour.me.inject.component.DaggerNewsDetailAddComponent;
import com.fly.tour.me.inject.module.NewsDetailAddModule;
import com.fly.tour.me.model.NewsDetailAddModel;
import com.fly.tour.me.presenter.NewsDetailAddPresenter;
import com.fly.tour.me.view.NewsTypeBottomSelectDialog;
......@@ -83,8 +85,8 @@ public class NewsDetailAddActivity extends BaseMvpActivity<NewsDetailAddModel,Ne
}
@Override
public NewsDetailAddPresenter initPresenter() {
return new NewsDetailAddPresenter(this);
public void injectPresenter() {
DaggerNewsDetailAddComponent.builder().newsDetailAddModule(new NewsDetailAddModule(this)).build().inject(this);
}
}
......@@ -13,6 +13,8 @@ import com.fly.tour.common.event.me.NewsTypeCrudEvent;
import com.fly.tour.common.util.ToastUtil;
import com.fly.tour.common.view.SettingBarView;
import com.fly.tour.me.contract.NewsTypeAddContract;
import com.fly.tour.me.inject.component.DaggerNewsTypeAddComponent;
import com.fly.tour.me.inject.module.NewsTypeAddModule;
import com.fly.tour.me.model.NewsTypeAddModel;
import com.fly.tour.me.presenter.NewsTypeAddPresenter;
......@@ -31,8 +33,8 @@ public class NewsTypeAddActivity extends BaseMvpActivity<NewsTypeAddModel,NewsTy
private Button mBtnSaveNewsType;
@Override
public NewsTypeAddPresenter initPresenter() {
return new NewsTypeAddPresenter(this);
public void injectPresenter() {
DaggerNewsTypeAddComponent.builder().newsTypeAddModule(new NewsTypeAddModule(this)).build().inject(this);
}
@Override
......
......@@ -16,6 +16,8 @@ import com.fly.tour.common.view.CommonDialogFragment;
import com.fly.tour.db.entity.NewsType;
import com.fly.tour.me.adapter.NewsTypeShowAdapter;
import com.fly.tour.me.contract.NewsTypeListContract;
import com.fly.tour.me.inject.component.DaggerNewsTypeListComponent;
import com.fly.tour.me.inject.module.NewsTypeListModule;
import com.fly.tour.me.model.NewsTypeListModel;
import com.fly.tour.me.presenter.NewsTypeListPresenter;
......@@ -80,8 +82,8 @@ public class NewsTypeListActivity extends BaseRefreshActivity<NewsTypeListModel,
}
@Override
public NewsTypeListPresenter initPresenter() {
return new NewsTypeListPresenter(this);
public void injectPresenter() {
DaggerNewsTypeListComponent.builder().newsTypeListModule(new NewsTypeListModule(this)).build().inject(this);
}
@Override
......
package com.fly.tour.me.inject.component;
import com.fly.tour.me.NewsDetailAddActivity;
import com.fly.tour.me.NewsTypeAddActivity;
import com.fly.tour.me.inject.module.NewsDetailAddModule;
import com.fly.tour.me.inject.module.NewsTypeAddModule;
import dagger.Component;
/**
* Description: <NewsTypeListComponent><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Component(modules = {NewsDetailAddModule.class})
public interface NewsDetailAddComponent {
void inject(NewsDetailAddActivity newsDetailAddActivity);
}
package com.fly.tour.me.inject.component;
import com.fly.tour.me.NewsTypeAddActivity;
import com.fly.tour.me.NewsTypeListActivity;
import com.fly.tour.me.inject.module.NewsTypeAddModule;
import com.fly.tour.me.inject.module.NewsTypeListModule;
import dagger.Component;
/**
* Description: <NewsTypeListComponent><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Component(modules = {NewsTypeAddModule.class})
public interface NewsTypeAddComponent {
void inject(NewsTypeAddActivity newsTypeAddActivity);
}
package com.fly.tour.me.inject.component;
import com.fly.tour.me.NewsTypeListActivity;
import com.fly.tour.me.inject.module.NewsTypeListModule;
import dagger.Component;
/**
* Description: <NewsTypeListComponent><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Component(modules = {NewsTypeListModule.class})
public interface NewsTypeListComponent {
void inject(NewsTypeListActivity newsTypeListActivity);
}
package com.fly.tour.me.inject.module;
import android.content.Context;
import com.fly.tour.me.contract.NewsDetailAddContract;
import com.fly.tour.me.contract.NewsTypeAddContract;
import dagger.Module;
import dagger.Provides;
/**
* Description: <NewsTypeListModule><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Module
public class NewsDetailAddModule {
private NewsDetailAddContract.View mView;
public NewsDetailAddModule(NewsDetailAddContract.View view) {
this.mView = view;
}
@Provides
public Context providerContext(){
return mView.getContext();
}
@Provides
public NewsDetailAddContract.View providerNewsDetailView(){
return mView;
}
}
package com.fly.tour.me.inject.module;
import android.content.Context;
import com.fly.tour.me.contract.NewsTypeAddContract;
import com.fly.tour.me.contract.NewsTypeListContract;
import dagger.Module;
import dagger.Provides;
/**
* Description: <NewsTypeListModule><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Module
public class NewsTypeAddModule {
private NewsTypeAddContract.View mView;
public NewsTypeAddModule(NewsTypeAddContract.View view) {
this.mView = view;
}
@Provides
public Context providerContext(){
return mView.getContext();
}
@Provides
public NewsTypeAddContract.View providerNewsTypeAddView(){
return mView;
}
}
package com.fly.tour.me.inject.module;
import android.content.Context;
import com.fly.tour.db.entity.NewsType;
import com.fly.tour.me.contract.NewsTypeListContract;
import dagger.Module;
import dagger.Provides;
/**
* Description: <NewsTypeListModule><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Module
public class NewsTypeListModule {
private NewsTypeListContract.View<NewsType> mView;
public NewsTypeListModule(NewsTypeListContract.View<NewsType> view) {
this.mView = view;
}
@Provides
public Context providerContext(){
return mView.getContext();
}
@Provides
public NewsTypeListContract.View<NewsType> providerNewsTypeListView(){
return mView;
}
}
......@@ -6,6 +6,8 @@ import com.fly.tour.common.mvp.BaseModel;
import com.fly.tour.db.dao.NewsDetailDao;
import com.fly.tour.me.contract.NewsDetailAddContract;
import javax.inject.Inject;
/**
* Description: <NewsDetailAddModel><br>
* Author: gxl<br>
......@@ -15,9 +17,10 @@ import com.fly.tour.me.contract.NewsDetailAddContract;
*/
public class NewsDetailAddModel extends BaseModel implements NewsDetailAddContract.Model {
private NewsDetailDao mNewsDetailDao;
public NewsDetailAddModel(Context context) {
@Inject
public NewsDetailAddModel(Context context, NewsDetailDao newsDetailDao) {
super(context);
mNewsDetailDao = new NewsDetailDao(context);
mNewsDetailDao = newsDetailDao;
}
@Override
......
......@@ -6,6 +6,8 @@ import com.fly.tour.common.mvp.BaseModel;
import com.fly.tour.db.dao.NewsTypeDao;
import com.fly.tour.me.contract.NewsTypeAddContract;
import javax.inject.Inject;
/**
* Description: <NewsTypeAddModel><br>
* Author: gxl<br>
......@@ -15,9 +17,10 @@ import com.fly.tour.me.contract.NewsTypeAddContract;
*/
public class NewsTypeAddModel extends BaseModel implements NewsTypeAddContract.Model {
private NewsTypeDao mNewsTypeDao;
public NewsTypeAddModel(Context context) {
@Inject
public NewsTypeAddModel(Context context, NewsTypeDao newsTypeDao) {
super(context);
mNewsTypeDao = new NewsTypeDao(context);
mNewsTypeDao = newsTypeDao;
}
@Override
......
......@@ -9,6 +9,8 @@ import com.fly.tour.me.contract.NewsTypeListContract;
import java.util.List;
import javax.inject.Inject;
/**
* Description: <NewsTypeListModel><br>
* Author: gxl<br>
......@@ -18,13 +20,12 @@ import java.util.List;
*/
public class NewsTypeListModel extends BaseModel implements NewsTypeListContract.Model {
public NewsTypeDao mNewsTypeDao;
public NewsTypeListModel(Context context) {
@Inject
public NewsTypeListModel(Context context, NewsTypeDao newsTypeDao) {
super(context);
mNewsTypeDao = new NewsTypeDao(context);
mNewsTypeDao = newsTypeDao;
}
@Override
public List<NewsType> getListNewsType() {
return mNewsTypeDao.getListNewsType();
......
......@@ -11,6 +11,8 @@ import com.fly.tour.me.model.NewsDetailAddModel;
import org.greenrobot.eventbus.EventBus;
import javax.inject.Inject;
/**
* Description: <NewsDetailAddPresenter><br>
* Author: gxl<br>
......@@ -19,13 +21,10 @@ import org.greenrobot.eventbus.EventBus;
* Update: <br>
*/
public class NewsDetailAddPresenter extends BasePresenter<NewsDetailAddModel,NewsDetailAddContract.View> implements NewsDetailAddContract.Presenter {
public NewsDetailAddPresenter(Context context) {
super(context);
}
@Override
public NewsDetailAddModel initModel() {
return new NewsDetailAddModel(mContext);
@Inject
public NewsDetailAddPresenter(Context context, NewsDetailAddContract.View view, NewsDetailAddModel model) {
super(context, view, model);
}
@Override
......
......@@ -7,6 +7,8 @@ import com.fly.tour.common.util.ToastUtil;
import com.fly.tour.me.contract.NewsTypeAddContract;
import com.fly.tour.me.model.NewsTypeAddModel;
import javax.inject.Inject;
/**
* Description: <NewsTypeAddPresenter><br>
* Author: gxl<br>
......@@ -15,13 +17,10 @@ import com.fly.tour.me.model.NewsTypeAddModel;
* Update: <br>
*/
public class NewsTypeAddPresenter extends BasePresenter<NewsTypeAddModel,NewsTypeAddContract.View> implements NewsTypeAddContract.Presenter {
public NewsTypeAddPresenter(Context context) {
super(context);
}
@Override
public NewsTypeAddModel initModel() {
return new NewsTypeAddModel(mContext);
@Inject
public NewsTypeAddPresenter(Context context, NewsTypeAddContract.View view, NewsTypeAddModel model) {
super(context, view, model);
}
@Override
......
......@@ -16,6 +16,8 @@ import org.greenrobot.eventbus.EventBus;
import java.util.List;
import java.util.logging.Handler;
import javax.inject.Inject;
/**
* Description: <NewsTypeListPresenter><br>
* Author: gxl<br>
......@@ -24,15 +26,11 @@ import java.util.logging.Handler;
* Update: <br>
*/
public class NewsTypeListPresenter extends BaseRefreshPresenter<NewsTypeListModel, NewsTypeListContract.View<NewsType>, NewsType> implements NewsTypeListContract.Presenter {
public NewsTypeListPresenter(Context context) {
super(context);
}
private boolean isfirst = true;
@Override
public NewsTypeListModel initModel() {
return new NewsTypeListModel(mContext);
@Inject
public NewsTypeListPresenter(Context context, NewsTypeListContract.View<NewsType> view, NewsTypeListModel model) {
super(context, view, model);
}
@Override
......
......@@ -16,6 +16,7 @@ import android.view.ViewGroup;
import com.fly.tour.common.base.BaseAdapter;
import com.fly.tour.common.util.DisplayUtil;
import com.fly.tour.db.dao.NewsTypeDao;
import com.fly.tour.db.entity.NewsType;
import com.fly.tour.me.R;
import com.fly.tour.me.adapter.NewsTypeSelectAdapter;
......@@ -74,7 +75,7 @@ public class NewsTypeBottomSelectDialog extends BottomSheetDialogFragment {
c.drawLine(0,0,0,DisplayUtil.dip2px(1), paint);
}
});
adapter.refresh(new NewsTypeListModel(getContext()).getListNewsType());
adapter.refresh(new NewsTypeListModel(getContext(),new NewsTypeDao(getContext())).getListNewsType());
adapter.setItemClickListener(new BaseAdapter.OnItemClickListener<NewsType>() {
@Override
public void onItemClick(NewsType newsType, int position) {
......
......@@ -2,17 +2,16 @@ package com.fly.tour.news;
import android.content.Context;
import android.content.Intent;
import android.support.test.espresso.DaggerBaseLayerComponent;
import android.widget.TextView;
import com.fly.tour.common.dagger.base.BaseMvpActivity;
import com.fly.tour.common.base.BaseMvpActivity;
import com.fly.tour.common.event.KeyCode;
import com.fly.tour.db.entity.NewsDetail;
import com.fly.tour.news.contract.NewsDetailContract;
import com.fly.tour.news.dagger.inject.component.DaggerNewsDetailComponent;
import com.fly.tour.news.dagger.inject.module.NewsDetailModule;
import com.fly.tour.news.dagger.model.NewsDetailModel;
import com.fly.tour.news.dagger.presenter.NewsDetailPresenter;
import com.fly.tour.news.inject.component.DaggerNewsDetailComponent;
import com.fly.tour.news.inject.module.NewsDetailModule;
import com.fly.tour.news.model.NewsDetailModel;
import com.fly.tour.news.presenter.NewsDetailPresenter;
import com.fly.tour.trip.R;
public class NewsDetailActivity extends BaseMvpActivity<NewsDetailModel,NewsDetailContract.View,NewsDetailPresenter> implements NewsDetailContract.View{
......
package com.fly.tour.news.dagger.model;
import android.content.Context;
import com.fly.tour.common.dagger.mvp.BaseModel;
import com.fly.tour.db.dao.NewsDetailDao;
import com.fly.tour.db.entity.NewsDetail;
import com.fly.tour.news.contract.NewsDetailContract;
import javax.inject.Inject;
/**
* Description: <NewsDetailModel><br>
* Author: gxl<br>
* Date: 2019/5/29<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public class NewsDetailModel extends BaseModel implements NewsDetailContract.Model {
private NewsDetailDao mNewsDetailDao;
@Inject
public NewsDetailModel(Context context,NewsDetailDao detailDao) {
super(context);
mNewsDetailDao = detailDao;
}
@Override
public NewsDetail getNewsDetailById(int id) {
return mNewsDetailDao.getNewsDetailById(id);
}
}
package com.fly.tour.news.dagger.presenter;
import android.content.Context;
import android.util.Log;
import com.fly.tour.common.dagger.mvp.BasePresenter;
import com.fly.tour.common.util.NetUtil;
import com.fly.tour.common.util.log.KLog;
import com.fly.tour.db.entity.NewsDetail;
import com.fly.tour.news.contract.NewsDetailContract;
import com.fly.tour.news.dagger.model.NewsDetailModel;
import javax.inject.Inject;
/**
* Description: <NewsDetailPresenter><br>
* Author: gxl<br>
* Date: 2019/5/29<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public class NewsDetailPresenter extends BasePresenter<NewsDetailModel,NewsDetailContract.View> implements NewsDetailContract.Presenter{
@Inject
public NewsDetailPresenter(Context context, NewsDetailContract.View view, NewsDetailModel model) {
super(context, view, model);
}
@Override
public void getNewsDetailById(final int id) {
KLog.v("MYTAG","context:"+mContext);
mView.showInitLoadView();
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(!NetUtil.checkNetToast()){
mView.showNetWorkErrView();
return;
}
NewsDetail newsDetail = mModel.getNewsDetailById(id);
if(newsDetail != null){
mView.showNewsDetail(newsDetail);
}else{
mView.showNoDataView();
}
mView.hideInitLoadView();
}
},1000 * 2);
}
}
......@@ -19,6 +19,8 @@ import com.fly.tour.db.entity.NewsType;
import com.fly.tour.news.NewsDetailActivity;
import com.fly.tour.news.adapter.NewsListAdatper;
import com.fly.tour.news.contract.NewsListContract;
import com.fly.tour.news.inject.component.DaggerNewsListComponent;
import com.fly.tour.news.inject.module.NewsListModule;
import com.fly.tour.news.model.NewsListModel;
import com.fly.tour.news.presenter.NewsListPresenter;
import com.fly.tour.trip.R;
......@@ -102,10 +104,6 @@ public class NewsListFragment extends BaseRefreshFragment<NewsListModel,NewsList
return R.id.refview_news_list;
}
@Override
public NewsListPresenter initPresenter() {
return new NewsListPresenter(mActivity);
}
......@@ -139,4 +137,9 @@ public class NewsListFragment extends BaseRefreshFragment<NewsListModel,NewsList
autoLoadData();
}
}
@Override
public void injectPresenter() {
DaggerNewsListComponent.builder().newsListModule(new NewsListModule(this)).build().inject(this);
}
}
package com.fly.tour.news.dagger.inject.component;
package com.fly.tour.news.inject.component;
import com.fly.tour.news.NewsDetailActivity;
import com.fly.tour.news.dagger.inject.module.NewsDetailModule;
import com.fly.tour.news.inject.module.NewsDetailModule;
import dagger.Component;
......
package com.fly.tour.news.inject.component;
import com.fly.tour.news.NewsDetailActivity;
import com.fly.tour.news.fragment.NewsListFragment;
import com.fly.tour.news.inject.module.NewsDetailModule;
import com.fly.tour.news.inject.module.NewsListModule;
import dagger.Component;
/**
* Description: <NewsDetailComponent><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Component(modules = {NewsListModule.class})
public interface NewsListComponent {
void inject(NewsListFragment listFragment);
}
package com.fly.tour.news.dagger.inject.module;
package com.fly.tour.news.inject.module;
import android.content.Context;
import com.fly.tour.news.contract.NewsDetailContract;
import com.fly.tour.news.dagger.model.NewsDetailModel;
import dagger.Module;
import dagger.Provides;
......
package com.fly.tour.news.inject.module;
import android.content.Context;
import com.fly.tour.db.entity.NewsDetail;
import com.fly.tour.news.contract.NewsDetailContract;
import com.fly.tour.news.contract.NewsListContract;
import dagger.Module;
import dagger.Provides;
/**
* Description: <NewsListModule><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Module
public class NewsListModule {
private NewsListContract.View<NewsDetail> mView;
public NewsListModule(NewsListContract.View<NewsDetail> view) {
this.mView = view;
}
@Provides
public Context providerContext(){
return mView.getContext();
}
@Provides
public NewsListContract.View<NewsDetail> providerNewsDetailView(){
return mView;
}
}
......@@ -8,6 +8,8 @@ import com.fly.tour.db.dao.NewsDetailDao;
import com.fly.tour.db.entity.NewsDetail;
import com.fly.tour.news.contract.NewsDetailContract;
import javax.inject.Inject;
/**
* Description: <NewsDetailModel><br>
* Author: gxl<br>
......@@ -17,11 +19,11 @@ import com.fly.tour.news.contract.NewsDetailContract;
*/
public class NewsDetailModel extends BaseModel implements NewsDetailContract.Model {
private final NewsDetailDao mNewsDetailDao;
public NewsDetailModel(Context context) {
private NewsDetailDao mNewsDetailDao;
@Inject
public NewsDetailModel(Context context, NewsDetailDao newsDetailDao) {
super(context);
mNewsDetailDao = new NewsDetailDao(context);
mNewsDetailDao = newsDetailDao;
}
@Override
......
......@@ -11,6 +11,8 @@ import com.fly.tour.news.contract.NewsListContract;
import java.util.List;
import javax.inject.Inject;
/**
* Description: <NewsListModel><br>
* Author: gxl<br>
......@@ -20,9 +22,10 @@ import java.util.List;
*/
public class NewsListModel extends BaseModel implements NewsListContract.Model {
private NewsDetailDao mDetailDao;
public NewsListModel(Context context) {
@Inject
public NewsListModel(Context context, NewsDetailDao detailDao) {
super(context);
mDetailDao = new NewsDetailDao(context);
mDetailDao = detailDao;
}
@Override
......
......@@ -10,6 +10,8 @@ import com.fly.tour.news.model.NewsDetailModel;
import java.util.logging.Handler;
import javax.inject.Inject;
/**
* Description: <NewsDetailPresenter><br>
* Author: gxl<br>
......@@ -18,13 +20,10 @@ import java.util.logging.Handler;
* Update: <br>
*/
public class NewsDetailPresenter extends BasePresenter<NewsDetailModel,NewsDetailContract.View> implements NewsDetailContract.Presenter{
public NewsDetailPresenter(Context context) {
super(context);
}
@Override
public NewsDetailModel initModel() {
return new NewsDetailModel(mContext);
@Inject
public NewsDetailPresenter(Context context, NewsDetailContract.View view, NewsDetailModel model) {
super(context, view, model);
}
@Override
......
......@@ -13,6 +13,8 @@ import com.fly.tour.news.model.NewsListModel;
import java.util.List;
import javax.inject.Inject;
/**
* Description: <NewsListPresenter><br>
* Author: gxl<br>
......@@ -23,16 +25,11 @@ import java.util.List;
public class NewsListPresenter extends BaseRefreshPresenter<NewsListModel, NewsListContract.View<NewsDetail>, NewsDetail> implements NewsListContract.Presenter {
private int newsType = 0;
public NewsListPresenter(Context context) {
super(context);
@Inject
public NewsListPresenter(Context context, NewsListContract.View<NewsDetail> view, NewsListModel model) {
super(context, view, model);
}
@Override
public NewsListModel initModel() {
return new NewsListModel(mContext);
}
@Override
public void refreshData() {
mView.hideNoDataView();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册