Commit 04daf44e by Wyh

1、prj查詢頁面最後一條數據重印報錯問題 2、餐牌頁面結構調整,頁面開發

Signed-off-by: Wyh <1239658231>
parent 4cce725c
...@@ -16,7 +16,6 @@ public class TabFragmentAdapter extends FragmentStatePagerAdapter { ...@@ -16,7 +16,6 @@ public class TabFragmentAdapter extends FragmentStatePagerAdapter {
public TabFragmentAdapter(@NonNull FragmentManager fm, int behavior) { public TabFragmentAdapter(@NonNull FragmentManager fm, int behavior) {
super(fm, behavior); super(fm, behavior);
} }
public void setFragments(List<Fragment> fragments) { public void setFragments(List<Fragment> fragments) {
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="@dimen/dp_1"
android:color="@color/theme_color" />
</shape>
\ No newline at end of file
...@@ -211,8 +211,13 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements ...@@ -211,8 +211,13 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
private void organizeData(int position, List<PrjBean.DataBean.Bean> prjData) { private void organizeData(int position, List<PrjBean.DataBean.Bean> prjData) {
if (prjData.get(position).getParentId() == 0) { if (prjData.get(position).getParentId() == 0) {
//是主食品,判斷有沒有子食品,如果沒有子食品,直接打印主食品 //是主食品,判斷有沒有子食品,如果沒有子食品,直接打印主食品
if (position + 1 > prjData.size() || if (position + 1 > prjData.size()) {
(position + 1 < prjData.size() && prjData.get(position + 1).getParentId() == 0)) { //沒有子食品
//直接打印
List<PrjBean.DataBean.Bean> printDatas = new ArrayList<>();
printDatas.add(prjData.get(position));
printPrj(printDatas);
} else if (prjData.get(position + 1).getParentId() == 0) {
//沒有子食品 //沒有子食品
//直接打印 //直接打印
List<PrjBean.DataBean.Bean> printDatas = new ArrayList<>(); List<PrjBean.DataBean.Bean> printDatas = new ArrayList<>();
......
...@@ -17,16 +17,7 @@ ...@@ -17,16 +17,7 @@
android:networkSecurityConfig="@xml/network_android" android:networkSecurityConfig="@xml/network_android"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity android:name=".mvp.ui.activity.menu.NewTimePeriodActivity" /> <activity android:name=".mvp.ui.activity.menu.ShellActivity" />
<activity android:name=".mvp.ui.activity.menu.AddFoodItemsActivity" />
<activity android:name=".mvp.ui.activity.menu.NewSelectPeriodActivity" />
<activity android:name=".mvp.ui.activity.menu.SelectTimePeriodActivity" />
<activity android:name=".mvp.ui.activity.menu.NewFoodTypeActivity" />
<activity android:name=".mvp.ui.activity.menu.SelectFoodTypeActivity" />
<activity android:name=".mvp.ui.activity.menu.FoodDetailsActivity" />
<activity android:name=".mvp.ui.activity.menu.SelectFoodGroupActivity" />
<activity android:name=".mvp.ui.activity.menu.NewFoodActivity" />
<activity android:name=".mvp.ui.activity.menu.NewAddFoodGroupActivity" />
<activity android:name=".mvp.ui.activity.NewMainActivity" /> <activity android:name=".mvp.ui.activity.NewMainActivity" />
<activity android:name=".mvp.ui.activity.ExpandListActivity" /> <activity android:name=".mvp.ui.activity.ExpandListActivity" />
<activity android:name=".mvp.ui.activity.RestaurantQrCodeActivity" /> <activity android:name=".mvp.ui.activity.RestaurantQrCodeActivity" />
......
package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.AddFoodItemsModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.AddFoodItemsContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.AddFoodItemsActivity;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:34
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = AddFoodItemsModule.class, dependencies = AppComponent.class)
public interface AddFoodItemsComponent {
void inject(AddFoodItemsActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
AddFoodItemsComponent.Builder view(AddFoodItemsContract.View view);
AddFoodItemsComponent.Builder appComponent(AppComponent appComponent);
AddFoodItemsComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.component; package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance; import com.gingersoft.gsa.cloud.main.di.module.EditFoodModule;
import dagger.Component; import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodContract;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.EditFoodFragment;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.FoodItemsModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodItemsFragment;
import dagger.BindsInstance;
import dagger.Component;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/29/2020 15:28 * Created by MVPArmsTemplate on 11/03/2020 11:07
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -25,17 +23,17 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodItemsFragment; ...@@ -25,17 +23,17 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodItemsFragment;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
@Component(modules = FoodItemsModule.class, dependencies = AppComponent.class) @Component(modules = EditFoodModule.class, dependencies = AppComponent.class)
public interface FoodItemsComponent { public interface EditFoodComponent {
void inject(FoodItemsFragment fragment); void inject(EditFoodFragment fragment);
@Component.Builder @Component.Builder
interface Builder { interface Builder {
@BindsInstance @BindsInstance
FoodItemsComponent.Builder view(FoodItemsContract.View view); EditFoodComponent.Builder view(EditFoodContract.View view);
FoodItemsComponent.Builder appComponent(AppComponent appComponent); EditFoodComponent.Builder appComponent(AppComponent appComponent);
FoodItemsComponent build(); EditFoodComponent build();
} }
} }
\ No newline at end of file
...@@ -5,18 +5,18 @@ import dagger.Component; ...@@ -5,18 +5,18 @@ import dagger.Component;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.NewTimePeriodModule; import com.gingersoft.gsa.cloud.main.di.module.EditFoodItemsModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewTimePeriodContract; import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewTimePeriodActivity; import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.EditFoodItemsFragment;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/30/2020 18:16 * Created by MVPArmsTemplate on 11/03/2020 17:54
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -24,18 +24,18 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewTimePeriodActivity; ...@@ -24,18 +24,18 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewTimePeriodActivity;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
@ActivityScope @FragmentScope
@Component(modules = NewTimePeriodModule.class, dependencies = AppComponent.class) @Component(modules = EditFoodItemsModule.class, dependencies = AppComponent.class)
public interface NewTimePeriodComponent { public interface EditFoodItemsComponent {
void inject(NewTimePeriodActivity activity); void inject(EditFoodItemsFragment fragment);
@Component.Builder @Component.Builder
interface Builder { interface Builder {
@BindsInstance @BindsInstance
NewTimePeriodComponent.Builder view(NewTimePeriodContract.View view); EditFoodItemsComponent.Builder view(EditFoodItemsContract.View view);
NewTimePeriodComponent.Builder appComponent(AppComponent appComponent); EditFoodItemsComponent.Builder appComponent(AppComponent appComponent);
NewTimePeriodComponent build(); EditFoodItemsComponent build();
} }
} }
\ No newline at end of file
...@@ -5,18 +5,18 @@ import dagger.Component; ...@@ -5,18 +5,18 @@ import dagger.Component;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.FoodPropertiesModule; import com.gingersoft.gsa.cloud.main.di.module.FoodMenuModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract; import com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuContract;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodPropertiesFragment; import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodMenuFragment;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/28/2020 17:29 * Created by MVPArmsTemplate on 11/03/2020 09:31
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -25,17 +25,17 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodPropertiesFragment ...@@ -25,17 +25,17 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodPropertiesFragment
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
@Component(modules = FoodPropertiesModule.class, dependencies = AppComponent.class) @Component(modules = FoodMenuModule.class, dependencies = AppComponent.class)
public interface FoodPropertiesComponent { public interface FoodMenuComponent {
void inject(FoodPropertiesFragment fragment); void inject(FoodMenuFragment fragment);
@Component.Builder @Component.Builder
interface Builder { interface Builder {
@BindsInstance @BindsInstance
FoodPropertiesComponent.Builder view(FoodPropertiesContract.View view); FoodMenuComponent.Builder view(FoodMenuContract.View view);
FoodPropertiesComponent.Builder appComponent(AppComponent appComponent); FoodMenuComponent.Builder appComponent(AppComponent appComponent);
FoodPropertiesComponent build(); FoodMenuComponent build();
} }
} }
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.NewAddFoodGroupModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewAddFoodGroupContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewAddFoodGroupActivity;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:21
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = NewAddFoodGroupModule.class, dependencies = AppComponent.class)
public interface NewAddFoodGroupComponent {
void inject(NewAddFoodGroupActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
NewAddFoodGroupComponent.Builder view(NewAddFoodGroupContract.View view);
NewAddFoodGroupComponent.Builder appComponent(AppComponent appComponent);
NewAddFoodGroupComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.component; package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.NewFoodModule; import com.gingersoft.gsa.cloud.main.di.module.NewFoodModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodContract; import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodContract;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.NewFoodFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewFoodActivity;
import dagger.BindsInstance;
import dagger.Component;
/** /**
...@@ -27,7 +25,7 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewFoodActivity; ...@@ -27,7 +25,7 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewFoodActivity;
@ActivityScope @ActivityScope
@Component(modules = NewFoodModule.class, dependencies = AppComponent.class) @Component(modules = NewFoodModule.class, dependencies = AppComponent.class)
public interface NewFoodComponent { public interface NewFoodComponent {
void inject(NewFoodActivity activity); void inject(NewFoodFragment activity);
@Component.Builder @Component.Builder
interface Builder { interface Builder {
......
package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.NewSelectPeriodModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewSelectPeriodContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewSelectPeriodActivity;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:30
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = NewSelectPeriodModule.class, dependencies = AppComponent.class)
public interface NewSelectPeriodComponent {
void inject(NewSelectPeriodActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
NewSelectPeriodComponent.Builder view(NewSelectPeriodContract.View view);
NewSelectPeriodComponent.Builder appComponent(AppComponent appComponent);
NewSelectPeriodComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.component; package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance; import com.gingersoft.gsa.cloud.main.di.module.NewlyAddedModule;
import dagger.Component; import com.gingersoft.gsa.cloud.main.mvp.contract.NewlyAddedContract;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.NewlyAddedFragment;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.main.di.module.NewFoodTypeModule; import dagger.BindsInstance;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodTypeContract; import dagger.Component;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewFoodTypeActivity;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:25 * Created by MVPArmsTemplate on 11/03/2020 09:53
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -24,18 +22,18 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewFoodTypeActivity; ...@@ -24,18 +22,18 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewFoodTypeActivity;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
@ActivityScope @FragmentScope
@Component(modules = NewFoodTypeModule.class, dependencies = AppComponent.class) @Component(modules = NewlyAddedModule.class, dependencies = AppComponent.class)
public interface NewFoodTypeComponent { public interface NewlyAddedComponent {
void inject(NewFoodTypeActivity activity); void inject(NewlyAddedFragment fragment);
@Component.Builder @Component.Builder
interface Builder { interface Builder {
@BindsInstance @BindsInstance
NewFoodTypeComponent.Builder view(NewFoodTypeContract.View view); NewlyAddedComponent.Builder view(NewlyAddedContract.View view);
NewFoodTypeComponent.Builder appComponent(AppComponent appComponent); NewlyAddedComponent.Builder appComponent(AppComponent appComponent);
NewFoodTypeComponent build(); NewlyAddedComponent build();
} }
} }
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.SelectFoodGroupModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodGroupContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.SelectFoodGroupActivity;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = SelectFoodGroupModule.class, dependencies = AppComponent.class)
public interface SelectFoodGroupComponent {
void inject(SelectFoodGroupActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
SelectFoodGroupComponent.Builder view(SelectFoodGroupContract.View view);
SelectFoodGroupComponent.Builder appComponent(AppComponent appComponent);
SelectFoodGroupComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.SelectFoodTypeModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodTypeContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.SelectFoodTypeActivity;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = SelectFoodTypeModule.class, dependencies = AppComponent.class)
public interface SelectFoodTypeComponent {
void inject(SelectFoodTypeActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
SelectFoodTypeComponent.Builder view(SelectFoodTypeContract.View view);
SelectFoodTypeComponent.Builder appComponent(AppComponent appComponent);
SelectFoodTypeComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.SelectTimePeriodModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectTimePeriodContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.SelectTimePeriodActivity;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:29
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = SelectTimePeriodModule.class, dependencies = AppComponent.class)
public interface SelectTimePeriodComponent {
void inject(SelectTimePeriodActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
SelectTimePeriodComponent.Builder view(SelectTimePeriodContract.View view);
SelectTimePeriodComponent.Builder appComponent(AppComponent appComponent);
SelectTimePeriodComponent build();
}
}
\ No newline at end of file
...@@ -5,18 +5,18 @@ import dagger.Component; ...@@ -5,18 +5,18 @@ import dagger.Component;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.FoodDetailsModule; import com.gingersoft.gsa.cloud.main.di.module.ShellModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodDetailsContract; import com.gingersoft.gsa.cloud.main.mvp.contract.ShellContract;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.FoodDetailsActivity; import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.ShellActivity;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:24 * Created by MVPArmsTemplate on 11/03/2020 16:32
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -25,17 +25,17 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.FoodDetailsActivity; ...@@ -25,17 +25,17 @@ import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.FoodDetailsActivity;
* ================================================ * ================================================
*/ */
@ActivityScope @ActivityScope
@Component(modules = FoodDetailsModule.class, dependencies = AppComponent.class) @Component(modules = ShellModule.class, dependencies = AppComponent.class)
public interface FoodDetailsComponent { public interface ShellComponent {
void inject(FoodDetailsActivity activity); void inject(ShellActivity activity);
@Component.Builder @Component.Builder
interface Builder { interface Builder {
@BindsInstance @BindsInstance
FoodDetailsComponent.Builder view(FoodDetailsContract.View view); ShellComponent.Builder view(ShellContract.View view);
FoodDetailsComponent.Builder appComponent(AppComponent appComponent); ShellComponent.Builder appComponent(AppComponent appComponent);
FoodDetailsComponent build(); ShellComponent build();
} }
} }
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.module; package com.gingersoft.gsa.cloud.main.di.module;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds; import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewTimePeriodContract; import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewTimePeriodModel; import com.gingersoft.gsa.cloud.main.mvp.model.EditFoodItemsModel;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/30/2020 18:16 * Created by MVPArmsTemplate on 11/03/2020 17:54
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.NewTimePeriodModel; ...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.NewTimePeriodModel;
* ================================================ * ================================================
*/ */
@Module @Module
public abstract class NewTimePeriodModule { public abstract class EditFoodItemsModule {
@Binds @Binds
abstract NewTimePeriodContract.Model bindNewTimePeriodModel(NewTimePeriodModel model); abstract EditFoodItemsContract.Model bindEditFoodItemsModel(EditFoodItemsModel model);
} }
\ No newline at end of file
...@@ -6,15 +6,15 @@ import dagger.Binds; ...@@ -6,15 +6,15 @@ import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract; import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodContract;
import com.gingersoft.gsa.cloud.main.mvp.model.FoodItemsModel; import com.gingersoft.gsa.cloud.main.mvp.model.EditFoodModel;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/29/2020 15:28 * Created by MVPArmsTemplate on 11/03/2020 11:07
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.FoodItemsModel; ...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.FoodItemsModel;
* ================================================ * ================================================
*/ */
@Module @Module
public abstract class FoodItemsModule { public abstract class EditFoodModule {
@Binds @Binds
abstract FoodItemsContract.Model bindFoodItemsModel(FoodItemsModel model); abstract EditFoodContract.Model bindEditFoodModel(EditFoodModel model);
} }
\ No newline at end of file
...@@ -6,15 +6,15 @@ import dagger.Binds; ...@@ -6,15 +6,15 @@ import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract; import com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuContract;
import com.gingersoft.gsa.cloud.main.mvp.model.FoodPropertiesModel; import com.gingersoft.gsa.cloud.main.mvp.model.FoodMenuModel;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/28/2020 17:29 * Created by MVPArmsTemplate on 11/03/2020 09:31
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.FoodPropertiesModel; ...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.FoodPropertiesModel;
* ================================================ * ================================================
*/ */
@Module @Module
public abstract class FoodPropertiesModule { public abstract class FoodMenuModule {
@Binds @Binds
abstract FoodPropertiesContract.Model bindFoodPropertiesModel(FoodPropertiesModel model); abstract FoodMenuContract.Model bindFoodMenuModel(FoodMenuModel model);
} }
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.module; package com.gingersoft.gsa.cloud.main.di.module;
import com.jess.arms.di.scope.ActivityScope; import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewFoodModel;
import dagger.Binds; import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewFoodModel;
/** /**
......
package com.gingersoft.gsa.cloud.main.di.module; package com.gingersoft.gsa.cloud.main.di.module;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds; import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewAddFoodGroupContract; import com.gingersoft.gsa.cloud.main.mvp.contract.NewlyAddedContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewAddFoodGroupModel; import com.gingersoft.gsa.cloud.main.mvp.model.NewlyAddedModel;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:21 * Created by MVPArmsTemplate on 11/03/2020 09:53
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.NewAddFoodGroupModel; ...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.NewAddFoodGroupModel;
* ================================================ * ================================================
*/ */
@Module @Module
public abstract class NewAddFoodGroupModule { public abstract class NewlyAddedModule {
@Binds @Binds
abstract NewAddFoodGroupContract.Model bindNewAddFoodGroupModel(NewAddFoodGroupModel model); abstract NewlyAddedContract.Model bindNewlyAddedModel(NewlyAddedModel model);
} }
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.module;
import com.jess.arms.di.scope.ActivityScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodGroupContract;
import com.gingersoft.gsa.cloud.main.mvp.model.SelectFoodGroupModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class SelectFoodGroupModule {
@Binds
abstract SelectFoodGroupContract.Model bindSelectFoodGroupModel(SelectFoodGroupModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.module;
import com.jess.arms.di.scope.ActivityScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodTypeContract;
import com.gingersoft.gsa.cloud.main.mvp.model.SelectFoodTypeModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class SelectFoodTypeModule {
@Binds
abstract SelectFoodTypeContract.Model bindSelectFoodTypeModel(SelectFoodTypeModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.module;
import com.jess.arms.di.scope.ActivityScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectTimePeriodContract;
import com.gingersoft.gsa.cloud.main.mvp.model.SelectTimePeriodModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:29
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class SelectTimePeriodModule {
@Binds
abstract SelectTimePeriodContract.Model bindSelectTimePeriodModel(SelectTimePeriodModel model);
}
\ No newline at end of file
...@@ -6,15 +6,15 @@ import dagger.Binds; ...@@ -6,15 +6,15 @@ import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodTypeContract; import com.gingersoft.gsa.cloud.main.mvp.contract.ShellContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewFoodTypeModel; import com.gingersoft.gsa.cloud.main.mvp.model.ShellModel;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:25 * Created by MVPArmsTemplate on 11/03/2020 16:32
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.NewFoodTypeModel; ...@@ -23,8 +23,8 @@ import com.gingersoft.gsa.cloud.main.mvp.model.NewFoodTypeModel;
* ================================================ * ================================================
*/ */
@Module @Module
public abstract class NewFoodTypeModule { public abstract class ShellModule {
@Binds @Binds
abstract NewFoodTypeContract.Model bindNewFoodTypeModel(NewFoodTypeModel model); abstract ShellContract.Model bindShellModel(ShellModel model);
} }
\ No newline at end of file
...@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel; ...@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel;
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/29/2020 15:28 * Created by MVPArmsTemplate on 11/03/2020 11:07
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel; ...@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public interface FoodItemsContract { public interface EditFoodContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
......
...@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel; ...@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel;
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/28/2020 17:29 * Created by MVPArmsTemplate on 11/03/2020 17:54
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel; ...@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public interface FoodPropertiesContract { public interface EditFoodItemsContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
......
...@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel; ...@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel;
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:25 * Created by MVPArmsTemplate on 11/03/2020 09:31
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel; ...@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public interface SelectFoodTypeContract { public interface FoodMenuContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
......
...@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel; ...@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel;
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:29 * Created by MVPArmsTemplate on 11/03/2020 09:53
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel; ...@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public interface SelectTimePeriodContract { public interface NewlyAddedContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
......
package com.gingersoft.gsa.cloud.main.di.module; package com.gingersoft.gsa.cloud.main.mvp.contract;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewSelectPeriodContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewSelectPeriodModel;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:30 * Created by MVPArmsTemplate on 11/03/2020 16:32
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -22,9 +16,14 @@ import com.gingersoft.gsa.cloud.main.mvp.model.NewSelectPeriodModel; ...@@ -22,9 +16,14 @@ import com.gingersoft.gsa.cloud.main.mvp.model.NewSelectPeriodModel;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
@Module public interface ShellContract {
public abstract class NewSelectPeriodModule { //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
@Binds }
abstract NewSelectPeriodContract.Model bindNewSelectPeriodModel(NewSelectPeriodModel model);
} }
...@@ -10,14 +10,14 @@ import com.jess.arms.di.scope.FragmentScope; ...@@ -10,14 +10,14 @@ import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject; import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract; import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/29/2020 15:28 * Created by MVPArmsTemplate on 11/03/2020 17:54
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -26,14 +26,14 @@ import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract; ...@@ -26,14 +26,14 @@ import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class FoodItemsModel extends BaseModel implements FoodItemsContract.Model { public class EditFoodItemsModel extends BaseModel implements EditFoodItemsContract.Model {
@Inject @Inject
Gson mGson; Gson mGson;
@Inject @Inject
Application mApplication; Application mApplication;
@Inject @Inject
public FoodItemsModel(IRepositoryManager repositoryManager) { public EditFoodItemsModel(IRepositoryManager repositoryManager) {
super(repositoryManager); super(repositoryManager);
} }
......
...@@ -6,18 +6,18 @@ import com.google.gson.Gson; ...@@ -6,18 +6,18 @@ import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel; import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject; import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectTimePeriodContract; import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodContract;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:29 * Created by MVPArmsTemplate on 11/03/2020 11:07
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -25,15 +25,15 @@ import com.gingersoft.gsa.cloud.main.mvp.contract.SelectTimePeriodContract; ...@@ -25,15 +25,15 @@ import com.gingersoft.gsa.cloud.main.mvp.contract.SelectTimePeriodContract;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
@ActivityScope @FragmentScope
public class SelectTimePeriodModel extends BaseModel implements SelectTimePeriodContract.Model { public class EditFoodModel extends BaseModel implements EditFoodContract.Model {
@Inject @Inject
Gson mGson; Gson mGson;
@Inject @Inject
Application mApplication; Application mApplication;
@Inject @Inject
public SelectTimePeriodModel(IRepositoryManager repositoryManager) { public EditFoodModel(IRepositoryManager repositoryManager) {
super(repositoryManager); super(repositoryManager);
} }
......
package com.gingersoft.gsa.cloud.main.mvp.presenter; package com.gingersoft.gsa.cloud.main.mvp.model;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewSelectPeriodContract; import com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuContract;
import com.jess.arms.di.scope.ActivityScope; import com.google.gson.Gson;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BaseModel;
import javax.inject.Inject; import javax.inject.Inject;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:30 * Created by MVPArmsTemplate on 11/03/2020 09:31
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -25,28 +23,22 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -25,28 +23,22 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
@ActivityScope @FragmentScope
public class NewSelectPeriodPresenter extends BasePresenter<NewSelectPeriodContract.Model, NewSelectPeriodContract.View> { public class FoodMenuModel extends BaseModel implements FoodMenuContract.Model {
@Inject @Inject
RxErrorHandler mErrorHandler; Gson mGson;
@Inject @Inject
Application mApplication; Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject @Inject
public NewSelectPeriodPresenter(NewSelectPeriodContract.Model model, NewSelectPeriodContract.View rootView) { public FoodMenuModel(IRepositoryManager repositoryManager) {
super(model, rootView); super(repositoryManager);
} }
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
this.mErrorHandler = null; this.mGson = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null; this.mApplication = null;
} }
} }
\ No newline at end of file
...@@ -10,14 +10,14 @@ import com.jess.arms.di.scope.FragmentScope; ...@@ -10,14 +10,14 @@ import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject; import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract; import com.gingersoft.gsa.cloud.main.mvp.contract.NewlyAddedContract;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/28/2020 17:29 * Created by MVPArmsTemplate on 11/03/2020 09:53
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -26,14 +26,14 @@ import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract; ...@@ -26,14 +26,14 @@ import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class FoodPropertiesModel extends BaseModel implements FoodPropertiesContract.Model { public class NewlyAddedModel extends BaseModel implements NewlyAddedContract.Model {
@Inject @Inject
Gson mGson; Gson mGson;
@Inject @Inject
Application mApplication; Application mApplication;
@Inject @Inject
public FoodPropertiesModel(IRepositoryManager repositoryManager) { public NewlyAddedModel(IRepositoryManager repositoryManager) {
super(repositoryManager); super(repositoryManager);
} }
......
...@@ -10,14 +10,14 @@ import com.jess.arms.di.scope.ActivityScope; ...@@ -10,14 +10,14 @@ import com.jess.arms.di.scope.ActivityScope;
import javax.inject.Inject; import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodTypeContract; import com.gingersoft.gsa.cloud.main.mvp.contract.ShellContract;
/** /**
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:25 * Created by MVPArmsTemplate on 11/03/2020 16:32
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -26,14 +26,14 @@ import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodTypeContract; ...@@ -26,14 +26,14 @@ import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodTypeContract;
* ================================================ * ================================================
*/ */
@ActivityScope @ActivityScope
public class SelectFoodTypeModel extends BaseModel implements SelectFoodTypeContract.Model { public class ShellModel extends BaseModel implements ShellContract.Model {
@Inject @Inject
Gson mGson; Gson mGson;
@Inject @Inject
Application mApplication; Application mApplication;
@Inject @Inject
public SelectFoodTypeModel(IRepositoryManager repositoryManager) { public ShellModel(IRepositoryManager repositoryManager) {
super(repositoryManager); super(repositoryManager);
} }
......
...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.main.mvp.model.bean; ...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import java.util.List; import java.util.List;
import lombok.Data; import lombok.Data;
import me.yokeyword.fragmentation.ISupportFragment;
@Data @Data
public class FoodMenuEditBean { public class FoodMenuEditBean {
...@@ -38,6 +39,10 @@ public class FoodMenuEditBean { ...@@ -38,6 +39,10 @@ public class FoodMenuEditBean {
*/ */
public final static int EDIT_FOOD_ITEM_UPLOAD_PIC = 6; public final static int EDIT_FOOD_ITEM_UPLOAD_PIC = 6;
/**
* 單選
*/
public final static int EDIT_FOOD_ITEM_RADIO = 7;
public int itemType; public int itemType;
...@@ -94,12 +99,20 @@ public class FoodMenuEditBean { ...@@ -94,12 +99,20 @@ public class FoodMenuEditBean {
*/ */
private String showValue; private String showValue;
private Class<?> cls; private Class<? extends ISupportFragment> toFragment;
/**
* {@link com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodMenuFragment.FRAGMENT_TYPE}
*/
private int fragmentType;
/** /**
* 是否控制客戶端顯示 * 是否控制客戶端顯示
*/ */
private boolean isShowClient = false; private boolean isShowClient = false;
/**
* 是否可編輯
*/
private boolean isEdit = true;
/** /**
* 顯示端 * 顯示端
*/ */
...@@ -126,7 +139,13 @@ public class FoodMenuEditBean { ...@@ -126,7 +139,13 @@ public class FoodMenuEditBean {
this.showTitle = showTitle; this.showTitle = showTitle;
this.isRequired = isRequired; this.isRequired = isRequired;
} }
public FoodMenuEditBean(int itemType, String showTitle, boolean isRequired, String hintText, boolean isEdit) {
this.itemType = itemType;
this.showTitle = showTitle;
this.isRequired = isRequired;
this.hintText = hintText;
this.isEdit = isEdit;
}
public FoodMenuEditBean(int itemType, String showTitle, boolean isRequired, String hintText) { public FoodMenuEditBean(int itemType, String showTitle, boolean isRequired, String hintText) {
this.itemType = itemType; this.itemType = itemType;
this.showTitle = showTitle; this.showTitle = showTitle;
...@@ -142,12 +161,12 @@ public class FoodMenuEditBean { ...@@ -142,12 +161,12 @@ public class FoodMenuEditBean {
this.showValue = showValue; this.showValue = showValue;
} }
public FoodMenuEditBean(int itemType, String showTitle, boolean isRequired, String hintText, Class<?> cls) { public FoodMenuEditBean(int itemType, String showTitle, boolean isRequired, String hintText, int fragmentType) {
this.itemType = itemType; this.itemType = itemType;
this.showTitle = showTitle; this.showTitle = showTitle;
this.isRequired = isRequired; this.isRequired = isRequired;
this.hintText = hintText; this.hintText = hintText;
this.cls = cls; this.fragmentType = fragmentType;
} }
public FoodMenuEditBean(int itemType, String showTitle, boolean isRequired, boolean showState) { public FoodMenuEditBean(int itemType, String showTitle, boolean isRequired, boolean showState) {
......
...@@ -2,8 +2,8 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter; ...@@ -2,8 +2,8 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewTimePeriodContract; import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
...@@ -14,19 +14,10 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -14,19 +14,10 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
/** /**
* ================================================ * 細項的編輯頁面
* Description:
* <p>
* Created by MVPArmsTemplate on 10/30/2020 18:16
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/ */
@ActivityScope @FragmentScope
public class NewTimePeriodPresenter extends BasePresenter<NewTimePeriodContract.Model, NewTimePeriodContract.View> { public class EditFoodItemsPresenter extends BasePresenter<EditFoodItemsContract.Model, EditFoodItemsContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -37,7 +28,7 @@ public class NewTimePeriodPresenter extends BasePresenter<NewTimePeriodContract. ...@@ -37,7 +28,7 @@ public class NewTimePeriodPresenter extends BasePresenter<NewTimePeriodContract.
AppManager mAppManager; AppManager mAppManager;
@Inject @Inject
public NewTimePeriodPresenter(NewTimePeriodContract.Model model, NewTimePeriodContract.View rootView) { public EditFoodItemsPresenter(EditFoodItemsContract.Model model, EditFoodItemsContract.View rootView) {
super(model, rootView); super(model, rootView);
} }
......
...@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter; ...@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract; import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodContract;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
...@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/29/2020 15:28 * Created by MVPArmsTemplate on 11/03/2020 11:07
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -26,7 +26,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -26,7 +26,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class FoodItemsPresenter extends BasePresenter<FoodItemsContract.Model, FoodItemsContract.View> { public class EditFoodPresenter extends BasePresenter<EditFoodContract.Model, EditFoodContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -37,7 +37,7 @@ public class FoodItemsPresenter extends BasePresenter<FoodItemsContract.Model, F ...@@ -37,7 +37,7 @@ public class FoodItemsPresenter extends BasePresenter<FoodItemsContract.Model, F
AppManager mAppManager; AppManager mAppManager;
@Inject @Inject
public FoodItemsPresenter(FoodItemsContract.Model model, FoodItemsContract.View rootView) { public EditFoodPresenter(EditFoodContract.Model model, EditFoodContract.View rootView) {
super(model, rootView); super(model, rootView);
} }
......
...@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter; ...@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract; import com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuContract;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
...@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/28/2020 17:29 * Created by MVPArmsTemplate on 11/03/2020 09:31
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -26,7 +26,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -26,7 +26,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class FoodPropertiesPresenter extends BasePresenter<FoodPropertiesContract.Model, FoodPropertiesContract.View> { public class FoodMenuPresenter extends BasePresenter<FoodMenuContract.Model, FoodMenuContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -37,7 +37,7 @@ public class FoodPropertiesPresenter extends BasePresenter<FoodPropertiesContrac ...@@ -37,7 +37,7 @@ public class FoodPropertiesPresenter extends BasePresenter<FoodPropertiesContrac
AppManager mAppManager; AppManager mAppManager;
@Inject @Inject
public FoodPropertiesPresenter(FoodPropertiesContract.Model model, FoodPropertiesContract.View rootView) { public FoodMenuPresenter(FoodMenuContract.Model model, FoodMenuContract.View rootView) {
super(model, rootView); super(model, rootView);
} }
......
...@@ -2,8 +2,8 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter; ...@@ -2,8 +2,8 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodTypeContract; import com.gingersoft.gsa.cloud.main.mvp.contract.NewlyAddedContract;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
...@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:25 * Created by MVPArmsTemplate on 11/03/2020 09:53
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -25,8 +25,8 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -25,8 +25,8 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
@ActivityScope @FragmentScope
public class NewFoodTypePresenter extends BasePresenter<NewFoodTypeContract.Model, NewFoodTypeContract.View> { public class NewlyAddedPresenter extends BasePresenter<NewlyAddedContract.Model, NewlyAddedContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -37,7 +37,7 @@ public class NewFoodTypePresenter extends BasePresenter<NewFoodTypeContract.Mode ...@@ -37,7 +37,7 @@ public class NewFoodTypePresenter extends BasePresenter<NewFoodTypeContract.Mode
AppManager mAppManager; AppManager mAppManager;
@Inject @Inject
public NewFoodTypePresenter(NewFoodTypeContract.Model model, NewFoodTypeContract.View rootView) { public NewlyAddedPresenter(NewlyAddedContract.Model model, NewlyAddedContract.View rootView) {
super(model, rootView); super(model, rootView);
} }
......
package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodGroupContract;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import javax.inject.Inject;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class SelectFoodGroupPresenter extends BasePresenter<SelectFoodGroupContract.Model, SelectFoodGroupContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public SelectFoodGroupPresenter(SelectFoodGroupContract.Model model, SelectFoodGroupContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodTypeContract;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import javax.inject.Inject;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class SelectFoodTypePresenter extends BasePresenter<SelectFoodTypeContract.Model, SelectFoodTypeContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public SelectFoodTypePresenter(SelectFoodTypeContract.Model model, SelectFoodTypeContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectTimePeriodContract;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import javax.inject.Inject;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:29
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class SelectTimePeriodPresenter extends BasePresenter<SelectTimePeriodContract.Model, SelectTimePeriodContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public SelectTimePeriodPresenter(SelectTimePeriodContract.Model model, SelectTimePeriodContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
...@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter; ...@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodDetailsContract; import com.gingersoft.gsa.cloud.main.mvp.contract.ShellContract;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
...@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:24 * Created by MVPArmsTemplate on 11/03/2020 16:32
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -26,7 +26,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -26,7 +26,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================ * ================================================
*/ */
@ActivityScope @ActivityScope
public class FoodDetailsPresenter extends BasePresenter<FoodDetailsContract.Model, FoodDetailsContract.View> { public class ShellPresenter extends BasePresenter<ShellContract.Model, ShellContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -37,7 +37,7 @@ public class FoodDetailsPresenter extends BasePresenter<FoodDetailsContract.Mode ...@@ -37,7 +37,7 @@ public class FoodDetailsPresenter extends BasePresenter<FoodDetailsContract.Mode
AppManager mAppManager; AppManager mAppManager;
@Inject @Inject
public FoodDetailsPresenter(FoodDetailsContract.Model model, FoodDetailsContract.View rootView) { public ShellPresenter(ShellContract.Model model, ShellContract.View rootView) {
super(model, rootView); super(model, rootView);
} }
......
package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.di.component.DaggerFoodDetailsComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodDetailsContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodDetailsPresenter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:24
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class FoodDetailsActivity extends BaseActivity<FoodDetailsPresenter> implements FoodDetailsContract.View {
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerFoodDetailsComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_food_details;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
if (message != null) {
LoadingDialog.showDialogForLoading(this, message, true);
} else {
LoadingDialog.showDialogForLoading(this);
}
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
}
...@@ -2,34 +2,19 @@ package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu; ...@@ -2,34 +2,19 @@ package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R; import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerFoodMenuManageComponent; import com.gingersoft.gsa.cloud.main.di.component.DaggerFoodMenuManageComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuManageContract; import com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuManageContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodMenuManagePresenter; import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodMenuManagePresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuMangerLeftAdapter; import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodMenuFragment;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuMangerRightAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity; import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.Arrays;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
...@@ -46,19 +31,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -46,19 +31,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter> implements FoodMenuManageContract.View, View.OnClickListener { public class FoodMenuManageActivity extends BaseFragmentActivity<FoodMenuManagePresenter> implements FoodMenuManageContract.View {
@BindView(R2.id.topbar_food_menu)
QMUITopBar topbarFoodMenu;
@BindView(R2.id.btn_add_food_group)
Button btnAddFoodGroup;
@BindView(R2.id.rv_food_menu_food_classification)
RecyclerView leftRv;
@BindView(R2.id.rv_food_menu_all_food)
RecyclerView rightRv;
private List<String> category = Arrays.asList("A食品", "B食品", "C食品", "D食品", "E食品");
@Override @Override
public void setupActivityComponent(@NonNull AppComponent appComponent) { public void setupActivityComponent(@NonNull AppComponent appComponent) {
...@@ -77,43 +50,7 @@ public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter ...@@ -77,43 +50,7 @@ public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
leftRv.setLayoutManager(new LinearLayoutManager(mContext)); loadRootFragment(R.id.layout_food_menu_content, FoodMenuFragment.newInstance());
leftRv.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
FoodMenuMangerLeftAdapter foodMenuMangerLeftAdapter = new FoodMenuMangerLeftAdapter(this, category);
leftRv.setAdapter(foodMenuMangerLeftAdapter);
String[] foods = new String[50];
for (int i = 0; i < 50; i++) {
int x = i / 10;
String foodName = category.get(x);
foods[i] = foodName + i;
}
rightRv.setLayoutManager(new LinearLayoutManager(mContext));
rightRv.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
FoodMenuMangerRightAdapter foodMenuMangerRightAdapter = new FoodMenuMangerRightAdapter(category, foods);
rightRv.setAdapter(foodMenuMangerRightAdapter);
foodMenuMangerLeftAdapter.setOnItemClickListener((adapter, view, position) -> {
int section = foodMenuMangerRightAdapter.getPositionForSection(position);
foodMenuMangerLeftAdapter.setSelectIndex(position);
((LinearLayoutManager)rightRv.getLayoutManager()).scrollToPositionWithOffset(section, 0);
});
rightRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
} }
@Override @Override
...@@ -123,12 +60,7 @@ public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter ...@@ -123,12 +60,7 @@ public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter
@Override @Override
public void initTopBar() { public void initTopBar() {
topbarFoodMenu.setTitle("餐牌管理");
topbarFoodMenu.addLeftBackImageButton().setOnClickListener(v -> killMyself());
QMUIAlphaImageButton rightButton = topbarFoodMenu.addRightImageButton(R.drawable.ic_add_have_border, R.id.topbar_right_add_button);
rightButton.setOnClickListener(v -> {
launchActivity(new Intent(mContext, NewFoodActivity.class));
});
} }
@Override @Override
...@@ -176,12 +108,4 @@ public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter ...@@ -176,12 +108,4 @@ public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter
finish(); finish();
} }
@OnClick({R2.id.btn_add_food_group})
@Override
public void onClick(View v) {
int viewId = v.getId();
if (viewId == R.id.btn_add_food_group) {
launchActivity(new Intent(mContext, NewAddFoodGroupActivity.class));
}
}
} }
package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerNewAddFoodGroupComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewAddFoodGroupContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.NewAddFoodGroupPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuAdapter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* 新增食品組----編輯食品組
* 傳了食品組信息就是編輯
*/
public class NewAddFoodGroupActivity extends BaseActivity<NewAddFoodGroupPresenter> implements NewAddFoodGroupContract.View {
@BindView(R2.id.topbar_list)
QMUITopBar topbarList;
@BindView(R2.id.rv_content)
RecyclerView rvContent;
@BindView(R2.id.btn_save)
QMUIAlphaButton btnSave;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerNewAddFoodGroupComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_new_add_food_group;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
//添加自定义分割线
DividerItemDecoration divider = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
Drawable drawable = ContextCompat.getDrawable(this, R.drawable.divider_f5);
assert drawable != null;
divider.setDrawable(drawable);
rvContent.addItemDecoration(divider);
rvContent.setLayoutManager(new LinearLayoutManager(mContext));
rvContent.setAdapter(FoodMenuAdapter.getFoodMenuAdapter(mContext, FoodMenuAdapter.NEW_FOOD_GROUP));
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
topbarList.setTitle("新增食品組");
topbarList.addLeftBackImageButton().setOnClickListener(v -> killMyself());
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
if (message != null) {
LoadingDialog.showDialogForLoading(this, message, true);
} else {
LoadingDialog.showDialogForLoading(this);
}
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerNewFoodComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.NewFoodPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodItemsFragment;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodPropertiesFragment;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodSetFragment;
import com.gingersoft.gsa.cloud.ui.adapter.TabFragmentAdapter;
import com.gingersoft.gsa.cloud.ui.view.MyTableView;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class NewFoodActivity extends BaseFragmentActivity<NewFoodPresenter> implements NewFoodContract.View {
@BindView(R2.id.topbar_new_food)
QMUITopBar topbarNewFood;
@BindView(R2.id.table_view_new_food)
MyTableView tableViewNewFood;
@BindView(R2.id.new_food_viewpager)
ViewPager newFoodViewpager;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerNewFoodComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_new_food;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
initViewPager();
}
private void initViewPager() {
List<String> titles = new ArrayList<>();
List<Fragment> mFragments = new ArrayList<>();
titles.add("基本屬性");
titles.add("細項");
titles.add("套餐");
mFragments.add(FoodPropertiesFragment.newInstance());
mFragments.add(FoodItemsFragment.newInstance());
mFragments.add(FoodSetFragment.newInstance());
//实例化适配器
TabFragmentAdapter mTabFragmentAdapter = new TabFragmentAdapter(getSupportFragmentManager(), 1);
//设置加载的Fragment集合
mTabFragmentAdapter.setFragments(mFragments);
//设置Viewpager的适配器
newFoodViewpager.setAdapter(mTabFragmentAdapter);
//TabLayout绑定ViewPager
tableViewNewFood.setTitles(titles).setupWithViewPager(newFoodViewpager);
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
topbarNewFood.setTitle("新增食品");
topbarNewFood.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> finish());
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
if (message != null) {
LoadingDialog.showDialogForLoading(this, message, true);
} else {
LoadingDialog.showDialogForLoading(this);
}
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerNewFoodTypeComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodTypeContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.NewFoodTypePresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class NewFoodTypeActivity extends BaseActivity<NewFoodTypePresenter> implements NewFoodTypeContract.View {
@BindView(R2.id.topbar_list)
QMUITopBar topbarList;
@BindView(R2.id.rv_content)
RecyclerView rvContent;
@BindView(R2.id.btn_save)
QMUIAlphaButton btnSave;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerNewFoodTypeComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_new_food_type;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
rvContent.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
rvContent.setLayoutManager(new LinearLayoutManager(mContext));
rvContent.setAdapter(FoodMenuAdapter.getFoodMenuAdapter(mContext, FoodMenuAdapter.NEW_FOOD_TYPE));
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
topbarList.setTitle("新增餐種");
topbarList.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> finish());
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
if (message != null) {
LoadingDialog.showDialogForLoading(this, message, true);
} else {
LoadingDialog.showDialogForLoading(this);
}
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.di.component.DaggerNewSelectPeriodComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewSelectPeriodContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.NewSelectPeriodPresenter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 10/27/2020 15:30
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class NewSelectPeriodActivity extends BaseActivity<NewSelectPeriodPresenter> implements NewSelectPeriodContract.View {
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerNewSelectPeriodComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_new_select_period;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
if (message != null) {
LoadingDialog.showDialogForLoading(this, message, true);
} else {
LoadingDialog.showDialogForLoading(this);
}
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerNewTimePeriodComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewTimePeriodContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.NewTimePeriodPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* 新增時段
*/
public class NewTimePeriodActivity extends BaseActivity<NewTimePeriodPresenter> implements NewTimePeriodContract.View {
@BindView(R2.id.topbar_list)
QMUITopBar topbarList;
@BindView(R2.id.rv_content)
RecyclerView rvContent;
@BindView(R2.id.btn_save)
QMUIAlphaButton btnSave;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerNewTimePeriodComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_new_time_period;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
rvContent.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
rvContent.setLayoutManager(new LinearLayoutManager(mContext));
rvContent.setAdapter(FoodMenuAdapter.getFoodMenuAdapter(mContext, FoodMenuAdapter.NEW_TIME_PERIOD));
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
topbarList.setTitle("新增時段");
topbarList.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> finish());
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
if (message != null) {
LoadingDialog.showDialogForLoading(this, message, true);
} else {
LoadingDialog.showDialogForLoading(this);
}
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerSelectFoodGroupComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodGroupContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FoodGroupBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.SelectFoodGroupPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodGroupEditAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* 選擇食品組
*/
public class SelectFoodGroupActivity extends BaseActivity<SelectFoodGroupPresenter> implements SelectFoodGroupContract.View, View.OnClickListener {
@BindView(R2.id.topbar_list)
QMUITopBar topbarList;
@BindView(R2.id.rv_content)
RecyclerView rvContent;
@BindView(R2.id.btn_save)
QMUIAlphaButton btnSave;
private FoodGroupEditAdapter foodGroupEditAdapter;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerSelectFoodGroupComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_select_food_group;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
btnSave.setVisibility(View.GONE);
List<FoodGroupBean> data = new ArrayList<>();
for (int i = 0; i < 10; i++) {
data.add(new FoodGroupBean("食品組名稱" + i));
}
rvContent.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
rvContent.setLayoutManager(new LinearLayoutManager(mContext));
foodGroupEditAdapter = new FoodGroupEditAdapter(data);
rvContent.setAdapter(foodGroupEditAdapter);
foodGroupEditAdapter.setOnItemClickListener((adapter, view, position) -> launchActivity(new Intent(mContext, NewAddFoodGroupActivity.class)));
foodGroupEditAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if (view.getId() == R.id.iv_food_group_delete) {
new AppDialog().showWaringDialog(mContext, "是否確認刪除" + data.get(position).getFoodGroupName(), (view1, dialog) -> {
foodGroupEditAdapter.removeAt(position);
dialog.dismiss();
});
}
});
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
topbarList.setTitle("選擇食品組");
topbarList.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> finish());
topbarList.addRightImageButton(R.drawable.ic_white_add, R.id.topbar_right_add_button).setOnClickListener(this);
topbarList.addRightImageButton(R.drawable.ic_white_edit, R.id.topbar_right_edit_button).setOnClickListener(this);
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
if (message != null) {
LoadingDialog.showDialogForLoading(this, message, true);
} else {
LoadingDialog.showDialogForLoading(this);
}
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
@Override
public void onClick(View v) {
int viewId = v.getId();
if (viewId == R.id.topbar_right_add_button) {
launchActivity(new Intent(this, NewAddFoodGroupActivity.class));
} else if (viewId == R.id.topbar_right_edit_button) {
if (foodGroupEditAdapter != null) {
foodGroupEditAdapter.setShowEdit();
}
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerSelectFoodTypeComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodTypeContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FoodGroupBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.SelectFoodTypePresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodGroupEditAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* 選擇餐種頁面
*/
public class SelectFoodTypeActivity extends BaseActivity<SelectFoodTypePresenter> implements SelectFoodTypeContract.View, View.OnClickListener {
@BindView(R2.id.topbar_list)
QMUITopBar topbarList;
@BindView(R2.id.rv_content)
RecyclerView rvContent;
@BindView(R2.id.btn_save)
QMUIAlphaButton btnSave;
private FoodGroupEditAdapter foodGroupEditAdapter;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerSelectFoodTypeComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_select_food_type;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
btnSave.setVisibility(View.GONE);
List<FoodGroupBean> data = new ArrayList<>();
for (int i = 0; i < 10; i++) {
data.add(new FoodGroupBean("餐種名稱" + i));
}
rvContent.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
rvContent.setLayoutManager(new LinearLayoutManager(mContext));
foodGroupEditAdapter = new FoodGroupEditAdapter(data);
rvContent.setAdapter(foodGroupEditAdapter);
foodGroupEditAdapter.setOnItemClickListener((adapter, view, position) -> launchActivity(new Intent(mContext, NewAddFoodGroupActivity.class)));
foodGroupEditAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if (view.getId() == R.id.iv_food_group_delete) {
new AppDialog().showWaringDialog(mContext, "是否確認刪除" + data.get(position).getFoodGroupName(), (view1, dialog) -> {
foodGroupEditAdapter.removeAt(position);
dialog.dismiss();
});
}
});
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
topbarList.setTitle("選擇餐種");
topbarList.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> finish());
topbarList.addRightImageButton(R.drawable.ic_white_add, R.id.topbar_right_add_button).setOnClickListener(this);
topbarList.addRightImageButton(R.drawable.ic_white_edit, R.id.topbar_right_edit_button).setOnClickListener(this);
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
if (message != null) {
LoadingDialog.showDialogForLoading(this, message, true);
} else {
LoadingDialog.showDialogForLoading(this);
}
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
@Override
public void onClick(View v) {
int viewId = v.getId();
if (viewId == R.id.topbar_right_add_button) {
launchActivity(new Intent(this, NewFoodTypeActivity.class));
} else if (viewId == R.id.topbar_right_edit_button) {
if (foodGroupEditAdapter != null) {
foodGroupEditAdapter.setShowEdit();
}
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerSelectTimePeriodComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectTimePeriodContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FoodGroupBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.SelectTimePeriodPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodGroupEditAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* 選擇時段
*/
public class SelectTimePeriodActivity extends BaseActivity<SelectTimePeriodPresenter> implements SelectTimePeriodContract.View, View.OnClickListener {
@BindView(R2.id.topbar_list)
QMUITopBar topbarList;
@BindView(R2.id.rv_content)
RecyclerView rvContent;
@BindView(R2.id.btn_save)
QMUIAlphaButton btnSave;
private FoodGroupEditAdapter foodGroupEditAdapter;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerSelectTimePeriodComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_select_time_period;
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
btnSave.setVisibility(View.GONE);
List<FoodGroupBean> data = new ArrayList<>();
for (int i = 0; i < 10; i++) {
data.add(new FoodGroupBean("時段名稱" + i));
}
rvContent.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
rvContent.setLayoutManager(new LinearLayoutManager(mContext));
foodGroupEditAdapter = new FoodGroupEditAdapter(data);
rvContent.setAdapter(foodGroupEditAdapter);
foodGroupEditAdapter.setOnItemClickListener((adapter, view, position) -> launchActivity(new Intent(mContext, NewAddFoodGroupActivity.class)));
foodGroupEditAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if (view.getId() == R.id.iv_food_group_delete) {
new AppDialog().showWaringDialog(mContext, "是否確認刪除" + data.get(position).getFoodGroupName(), (view1, dialog) -> {
foodGroupEditAdapter.removeAt(position);
dialog.dismiss();
});
}
});
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
topbarList.setTitle("選擇時段");
topbarList.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> finish());
topbarList.addRightImageButton(R.drawable.ic_white_add, R.id.topbar_right_add_button).setOnClickListener(this);
topbarList.addRightImageButton(R.drawable.ic_white_edit, R.id.topbar_right_edit_button).setOnClickListener(this);
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
if (message != null) {
LoadingDialog.showDialogForLoading(this, message, true);
} else {
LoadingDialog.showDialogForLoading(this);
}
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
@Override
public void onClick(View v) {
int viewId = v.getId();
if (viewId == R.id.topbar_right_add_button) {
launchActivity(new Intent(this, NewTimePeriodActivity.class));
} else if (viewId == R.id.topbar_right_edit_button) {
if (foodGroupEditAdapter != null) {
foodGroupEditAdapter.setShowEdit();
}
}
}
}
...@@ -7,14 +7,18 @@ import androidx.annotation.NonNull; ...@@ -7,14 +7,18 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.gingersoft.gsa.cloud.main.R; import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.di.component.DaggerAddFoodItemsComponent; import com.gingersoft.gsa.cloud.main.di.component.DaggerShellComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.AddFoodItemsContract; import com.gingersoft.gsa.cloud.main.mvp.contract.ShellContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.AddFoodItemsPresenter; import com.gingersoft.gsa.cloud.main.mvp.presenter.ShellPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.BaseFoodMenuFragment;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity; import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import me.yokeyword.fragmentation.ISupportFragment;
import static com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.BaseFoodMenuFragment.FRAGMENT_TYPE;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
...@@ -22,7 +26,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -22,7 +26,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* ================================================ * ================================================
* Description: * Description:
* <p> * <p>
* Created by MVPArmsTemplate on 10/27/2020 15:34 * Created by MVPArmsTemplate on 11/03/2020 16:32
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a> * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a> * <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a> * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
...@@ -30,11 +34,11 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -30,11 +34,11 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public class AddFoodItemsActivity extends BaseActivity<AddFoodItemsPresenter> implements AddFoodItemsContract.View { public class ShellActivity extends BaseFragmentActivity<ShellPresenter> implements ShellContract.View {
@Override @Override
public void setupActivityComponent(@NonNull AppComponent appComponent) { public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerAddFoodItemsComponent //如找不到该类,请编译一下项目 DaggerShellComponent //如找不到该类,请编译一下项目
.builder() .builder()
.appComponent(appComponent) .appComponent(appComponent)
.view(this) .view(this)
...@@ -44,12 +48,19 @@ public class AddFoodItemsActivity extends BaseActivity<AddFoodItemsPresenter> im ...@@ -44,12 +48,19 @@ public class AddFoodItemsActivity extends BaseActivity<AddFoodItemsPresenter> im
@Override @Override
public int initView(@Nullable Bundle savedInstanceState) { public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_add_food_items; return R.layout.activity_shell;
} }
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
int intExtra = getIntent().getIntExtra(FRAGMENT_TYPE, 0);
ISupportFragment fragmentByType = BaseFoodMenuFragment.getFragmentByType(intExtra);
if(fragmentByType != null){
loadRootFragment(R.id.layout_food_menu_shell_content, fragmentByType);
} else {
showMessage("加載失敗..");
killMyself();
}
} }
@Override @Override
......
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu;
import android.content.Context;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FoodMenuEditBean;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.multi.RadioAdapter;
import org.jetbrains.annotations.NotNull;
/**
* @author 宇航.
* User: admin
* Date: 2020/10/28
* Time: 11:54
*/
public class RadioItemProvider extends FoodMenuItemProvider {
private Context context;
private int selectIndex;
public RadioItemProvider(Context context) {
this.context = context;
}
@Override
public int getItemViewType() {
return FoodMenuEditBean.EDIT_FOOD_ITEM_RADIO;
}
@Override
public int getLayoutId() {
return R.layout.item_food_menu_radio;
}
@Override
public void convert(@NotNull BaseViewHolder baseViewHolder, FoodMenuEditBean foodMenuEditBean) {
super.convert(baseViewHolder, foodMenuEditBean);
RecyclerView rv = baseViewHolder.getView(R.id.rv_radio);
rv.setLayoutManager(new GridLayoutManager(context, 2));
rv.setAdapter(new RadioAdapter(foodMenuEditBean.getCheckBoxList()));
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu; package com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
...@@ -42,12 +40,4 @@ public class SelectItemProvider extends FoodMenuItemProvider { ...@@ -42,12 +40,4 @@ public class SelectItemProvider extends FoodMenuItemProvider {
textView.setText(foodMenuEditBean.getHintText()); textView.setText(foodMenuEditBean.getHintText());
} }
} }
@Override
public void onClick(@NotNull BaseViewHolder helper, @NotNull View view, FoodMenuEditBean data, int position) {
super.onClick(helper, view, data, position);
if (data.getCls() != null) {
context.startActivity(new Intent(context, data.getCls()));
}
}
} }
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.multi;
import android.widget.RadioButton;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FoodMenuEditBean;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
/**
* @author 宇航.
* User: admin
* Date: 2020/10/28
* Time: 16:04
* Use:
*/
public class RadioAdapter extends BaseQuickAdapter<FoodMenuEditBean.ShowClient, BaseViewHolder> {
private int checkedIndex;
public RadioAdapter(@Nullable List<FoodMenuEditBean.ShowClient> data) {
super(R.layout.item_child_radio, data);
}
@Override
protected void convert(@NotNull BaseViewHolder baseViewHolder, FoodMenuEditBean.ShowClient showClient) {
RadioButton radioButton = baseViewHolder.getView(R.id.rb_food_menu_item);
radioButton.setText(showClient.getClientName());
radioButton.setChecked(baseViewHolder.getAdapterPosition() == checkedIndex);
radioButton.setOnCheckedChangeListener((buttonView, isChecked) -> {
checkedIndex = baseViewHolder.getAdapterPosition();
notifyDataSetChanged();
});
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FoodMenuEditBean;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuAdapter;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.mvp.IPresenter;
import me.yokeyword.fragmentation.ISupportFragment;
/**
* @author 宇航.
* User: admin
* Date: 2020/11/3
* Time: 14:22
* Use:
*/
public abstract class BaseFoodMenuFragment<P extends IPresenter> extends BaseFragment<P> {
public final static String FRAGMENT_TYPE = "fragmentType";
public final static String TITLE_KEY = "title";
public final static String TO_SHELL_ACTIVITY = "toShellActivity";
/**
* 新增食品組
*/
public final static int NEW_FOOD_GROUP = 1;
/**
* 食品詳情的基本屬性頁面
*/
public final static int FOOD_PROPERTIES = 2;
/**
* 選擇時段
*/
public final static int SELECT_TIME_PERIOD = 3;
/**
* 新增時段
*/
public final static int NEW_TIME_PERIOD = 4;
/**
* 選擇食品組
*/
public final static int SELECT_FOOD_GROUP = 5;
/**
* 選擇餐種
*/
public final static int SELECT_FOOD_TYPE = 6;
/**
* 新增餐種
*/
public final static int NEW_FOOD_TYPE = 7;
/**
* 加配細項
*/
public final static int ADD_FOOD_ITEM = 8;
/**
* 編輯細項組
*/
public final static int EDIT_FOOD_ITEM_GROUP = 9;
protected void toFragmentByAdapter(FoodMenuAdapter adapter, int position) {
if (adapter.getItemViewType(position) == FoodMenuEditBean.EDIT_FOOD_ITEM_SELECT) {
toFragmentByFragmentType(adapter.getData().get(position).getFragmentType());
}
}
public static ISupportFragment getFragmentByType(int fragmentType) {
ISupportFragment fragment = null;
switch (fragmentType) {
case NEW_FOOD_GROUP:
fragment = NewlyAddedFragment.newInstance(fragmentType, "新增食品組", false);
break;
case FOOD_PROPERTIES:
fragment = NewFoodFragment.newInstance();
break;
case SELECT_TIME_PERIOD:
fragment = EditFoodFragment.newInstance(fragmentType,"選擇時段");
break;
case SELECT_FOOD_GROUP:
fragment = EditFoodFragment.newInstance(fragmentType, "選擇食品組");
break;
case SELECT_FOOD_TYPE:
fragment = EditFoodFragment.newInstance(fragmentType, "選擇餐種");
break;
case NEW_TIME_PERIOD:
fragment = NewlyAddedFragment.newInstance(fragmentType, "新增時段");
break;
case NEW_FOOD_TYPE:
fragment = NewlyAddedFragment.newInstance(fragmentType, "新增餐種");
break;
case ADD_FOOD_ITEM:
fragment = NewlyAddedFragment.newInstance(fragmentType, "加配細項");
break;
case EDIT_FOOD_ITEM_GROUP:
fragment = EditFoodFragment.newInstance(fragmentType, "選擇細項組");
break;
default:
break;
}
return fragment;
}
protected void toFragmentByFragmentType(int fragmentType) {
ISupportFragment fragment = getFragmentByType(fragmentType);
if (fragment != null) {
start(fragment);
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerEditFoodComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FoodGroupBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FoodMenuEditBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.EditFoodPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodGroupEditAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* 餐牌 -- 編輯共用fragment
*/
public class EditFoodFragment extends BaseFoodMenuFragment<EditFoodPresenter> implements EditFoodContract.View, View.OnClickListener {
public static EditFoodFragment newInstance(int fragmentType, String title) {
return newInstance(fragmentType, title, false);
}
public static EditFoodFragment newInstance(int fragmentType, String title, boolean isToShellActivity) {
EditFoodFragment fragment = new EditFoodFragment();
fragment.setArguments(getBundle(fragmentType, title, isToShellActivity));
return fragment;
}
private static Bundle getBundle(int fragmentType, String title, boolean isToShellActivity) {
Bundle bundle = new Bundle();
bundle.putInt(FRAGMENT_TYPE, fragmentType);
bundle.putString(TITLE_KEY, title);
bundle.putBoolean(TO_SHELL_ACTIVITY, isToShellActivity);
return bundle;
}
@BindView(R2.id.topbar_list)
QMUITopBar topbarList;
@BindView(R2.id.rv_content)
RecyclerView rvContent;
private int fragmentType;
private String title;
private boolean toShellActivity;
private FoodGroupEditAdapter foodGroupEditAdapter;
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerEditFoodComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_edit_food, container, false);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
if (arguments != null) {
fragmentType = arguments.getInt(FRAGMENT_TYPE);
title = arguments.getString(TITLE_KEY);
toShellActivity = arguments.getBoolean(TO_SHELL_ACTIVITY);
}
initTopBar(title);
List<FoodGroupBean> data = new ArrayList<>();
for (int i = 0; i < 10; i++) {
data.add(new FoodGroupBean("時段名稱" + i));
}
rvContent.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
rvContent.setLayoutManager(new LinearLayoutManager(mContext));
foodGroupEditAdapter = new FoodGroupEditAdapter(data);
rvContent.setAdapter(foodGroupEditAdapter);
foodGroupEditAdapter.setOnItemClickListener((adapter, view, position) -> {
if (adapter.getItemViewType(position) == FoodMenuEditBean.EDIT_FOOD_ITEM_SELECT) {
if (toShellActivity) {
// Intent intent = new Intent(mContext, ShellActivity.class);
// intent.putExtra(FRAGMENT_TYPE, foodGroupEditAdapter.getData().get(position).getFragmentType());
// startActivity(intent);
} else {
// toFragmentByFragmentType(foodGroupEditAdapter.getData().get(position).getFragmentType());
}
} else {
}
});
foodGroupEditAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if (view.getId() == R.id.iv_food_group_delete) {
new AppDialog().showWaringDialog(mContext, "是否確認刪除" + data.get(position).getFoodGroupName(), (view1, dialog) -> {
foodGroupEditAdapter.removeAt(position);
dialog.dismiss();
});
}
});
}
public void initTopBar(String title) {
topbarList.setTitle(title);
topbarList.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> {
FragmentActivity activity = getActivity();
if (activity != null) {
activity.onBackPressed();
}
});
topbarList.addRightImageButton(R.drawable.ic_white_add, R.id.topbar_right_add_button).setOnClickListener(this);
topbarList.addRightImageButton(R.drawable.ic_white_edit, R.id.topbar_right_edit_button).setOnClickListener(this);
}
@Override
public boolean onBackPressedSupport() {
return super.onBackPressedSupport();
}
/**
* 通过此方法可以使 Fragment 能够与外界做一些交互和通信, 比如说外部的 Activity 想让自己持有的某个 Fragment 对象执行一些方法,
* 建议在有多个需要与外界交互的方法时, 统一传 {@link Message}, 通过 what 字段来区分不同的方法, 在 {@link #setData(Object)}
* 方法中就可以 {@code switch} 做不同的操作, 这样就可以用统一的入口方法做多个不同的操作, 可以起到分发的作用
* <p>
* 调用此方法时请注意调用时 Fragment 的生命周期, 如果调用 {@link #setData(Object)} 方法时 {@link Fragment#onCreate(Bundle)} 还没执行
* 但在 {@link #setData(Object)} 里却调用了 Presenter 的方法, 是会报空的, 因为 Dagger 注入是在 {@link Fragment#onCreate(Bundle)} 方法中执行的
* 然后才创建的 Presenter, 如果要做一些初始化操作,可以不必让外部调用 {@link #setData(Object)}, 在 {@link #initData(Bundle)} 中初始化就可以了
* <p>
* Example usage:
* <pre>
* public void setData(@Nullable Object data) {
* if (data != null && data instanceof Message) {
* switch (((Message) data).what) {
* case 0:
* loadData(((Message) data).arg1);
* break;
* case 1:
* refreshUI();
* break;
* default:
* //do something
* break;
* }
* }
* }
*
* // call setData(Object):
* Message data = new Message();
* data.what = 0;
* data.arg1 = 1;
* fragment.setData(data);
* </pre>
*
* @param data 当不需要参数时 {@code data} 可以为 {@code null}
*/
@Override
public void setData(@Nullable Object data) {
}
@Override
public void showLoading(String message) {
}
@Override
public void hideLoading() {
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
}
@Override
public void onClick(View v) {
int viewId = v.getId();
if (viewId == R.id.topbar_right_add_button) {
int toFragmentType = 0;
switch (fragmentType) {
case SELECT_FOOD_GROUP:
toFragmentType = NEW_FOOD_GROUP;
break;
case SELECT_FOOD_TYPE:
toFragmentType = NEW_FOOD_TYPE;
break;
case SELECT_TIME_PERIOD:
toFragmentType = NEW_TIME_PERIOD;
break;
default:
break;
}
start(getFragmentByType(toFragmentType));
} else if (viewId == R.id.topbar_right_edit_button) {
if (foodGroupEditAdapter != null) {
foodGroupEditAdapter.setShowEdit();
}
}
}
}
...@@ -6,35 +6,57 @@ import android.os.Message; ...@@ -6,35 +6,57 @@ import android.os.Message;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R; import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.di.component.DaggerFoodItemsComponent; import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract; import com.gingersoft.gsa.cloud.main.di.component.DaggerEditFoodItemsComponent;
import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodItemsPresenter; import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
import com.jess.arms.base.BaseFragment; import com.gingersoft.gsa.cloud.main.mvp.presenter.EditFoodItemsPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.ShellActivity;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import butterknife.BindView;
import butterknife.OnClick;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
/** /**
* 新增食品--細項編輯頁面 * ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 11/03/2020 17:54
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/ */
public class FoodItemsFragment extends BaseFragment<FoodItemsPresenter> implements FoodItemsContract.View { public class EditFoodItemsFragment extends BaseFoodMenuFragment<EditFoodItemsPresenter> implements EditFoodItemsContract.View, View.OnClickListener {
@BindView(R2.id.tv_add_item)
TextView tvAddItem;
@BindView(R2.id.tv_food_item_manger)
TextView tvFoodItemManger;
@BindView(R2.id.rv_food_items)
RecyclerView rvFoodItems;
public static FoodItemsFragment newInstance() { public static EditFoodItemsFragment newInstance() {
FoodItemsFragment fragment = new FoodItemsFragment(); EditFoodItemsFragment fragment = new EditFoodItemsFragment();
return fragment; return fragment;
} }
@Override @Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) { public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerFoodItemsComponent //如找不到该类,请编译一下项目 DaggerEditFoodItemsComponent //如找不到该类,请编译一下项目
.builder() .builder()
.appComponent(appComponent) .appComponent(appComponent)
.view(this) .view(this)
...@@ -44,7 +66,7 @@ public class FoodItemsFragment extends BaseFragment<FoodItemsPresenter> implemen ...@@ -44,7 +66,7 @@ public class FoodItemsFragment extends BaseFragment<FoodItemsPresenter> implemen
@Override @Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_food_items, container, false); return inflater.inflate(R.layout.fragment_edit_food_items, container, false);
} }
@Override @Override
...@@ -119,4 +141,20 @@ public class FoodItemsFragment extends BaseFragment<FoodItemsPresenter> implemen ...@@ -119,4 +141,20 @@ public class FoodItemsFragment extends BaseFragment<FoodItemsPresenter> implemen
public void killMyself() { public void killMyself() {
} }
@OnClick({R2.id.tv_add_item, R2.id.tv_food_item_manger})
@Override
public void onClick(View v) {
int viewId = v.getId();
if(viewId == R.id.tv_add_item){
//加配細項
Intent intent = new Intent(mContext, ShellActivity.class);
intent.putExtra(FRAGMENT_TYPE, ADD_FOOD_ITEM);
startActivity(intent);
} else if(viewId == R.id.tv_food_item_manger){
//細項管理
}
}
} }
package com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerFoodMenuComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodMenuPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuMangerLeftAdapter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuMangerRightAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.Arrays;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 11/03/2020 09:31
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class FoodMenuFragment extends BaseFoodMenuFragment<FoodMenuPresenter> implements FoodMenuContract.View, View.OnClickListener {
@BindView(R2.id.topbar_food_menu)
QMUITopBar topbarFoodMenu;
@BindView(R2.id.btn_add_food_group)
Button btnAddFoodGroup;
@BindView(R2.id.rv_food_menu_food_classification)
RecyclerView leftRv;
@BindView(R2.id.rv_food_menu_all_food)
RecyclerView rightRv;
private List<String> category = Arrays.asList("A食品", "B食品", "C食品", "D食品", "E食品");
public static FoodMenuFragment newInstance() {
FoodMenuFragment fragment = new FoodMenuFragment();
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerFoodMenuComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_food_menu, container, false);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
initTopBar();
leftRv.setLayoutManager(new LinearLayoutManager(mContext));
leftRv.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
FoodMenuMangerLeftAdapter foodMenuMangerLeftAdapter = new FoodMenuMangerLeftAdapter(mContext, category);
leftRv.setAdapter(foodMenuMangerLeftAdapter);
String[] foods = new String[50];
for (int i = 0; i < 50; i++) {
int x = i / 10;
String foodName = category.get(x);
foods[i] = foodName + i;
}
rightRv.setLayoutManager(new LinearLayoutManager(mContext));
rightRv.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
FoodMenuMangerRightAdapter foodMenuMangerRightAdapter = new FoodMenuMangerRightAdapter(category, foods);
rightRv.setAdapter(foodMenuMangerRightAdapter);
foodMenuMangerLeftAdapter.setOnItemClickListener((adapter, view, position) -> {
int section = foodMenuMangerRightAdapter.getPositionForSection(position);
foodMenuMangerLeftAdapter.setSelectIndex(position);
((LinearLayoutManager) rightRv.getLayoutManager()).scrollToPositionWithOffset(section, 0);
});
rightRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
}
public void initTopBar() {
topbarFoodMenu.setTitle("餐牌管理");
topbarFoodMenu.addLeftBackImageButton().setOnClickListener(v -> onBackPressedSupport());
QMUIAlphaImageButton rightButton = topbarFoodMenu.addRightImageButton(R.drawable.ic_add_have_border, R.id.topbar_right_add_button);
rightButton.setOnClickListener(v -> toFragmentByFragmentType(FOOD_PROPERTIES));
}
/**
* 通过此方法可以使 Fragment 能够与外界做一些交互和通信, 比如说外部的 Activity 想让自己持有的某个 Fragment 对象执行一些方法,
* 建议在有多个需要与外界交互的方法时, 统一传 {@link Message}, 通过 what 字段来区分不同的方法, 在 {@link #setData(Object)}
* 方法中就可以 {@code switch} 做不同的操作, 这样就可以用统一的入口方法做多个不同的操作, 可以起到分发的作用
* <p>
* 调用此方法时请注意调用时 Fragment 的生命周期, 如果调用 {@link #setData(Object)} 方法时 {@link Fragment#onCreate(Bundle)} 还没执行
* 但在 {@link #setData(Object)} 里却调用了 Presenter 的方法, 是会报空的, 因为 Dagger 注入是在 {@link Fragment#onCreate(Bundle)} 方法中执行的
* 然后才创建的 Presenter, 如果要做一些初始化操作,可以不必让外部调用 {@link #setData(Object)}, 在 {@link #initData(Bundle)} 中初始化就可以了
* <p>
* Example usage:
* <pre>
* public void setData(@Nullable Object data) {
* if (data != null && data instanceof Message) {
* switch (((Message) data).what) {
* case 0:
* loadData(((Message) data).arg1);
* break;
* case 1:
* refreshUI();
* break;
* default:
* //do something
* break;
* }
* }
* }
*
* // call setData(Object):
* Message data = new Message();
* data.what = 0;
* data.arg1 = 1;
* fragment.setData(data);
* </pre>
*
* @param data 当不需要参数时 {@code data} 可以为 {@code null}
*/
@Override
public void setData(@Nullable Object data) {
}
@Override
public void showLoading(String message) {
}
@Override
public void hideLoading() {
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
}
@OnClick({R2.id.btn_add_food_group})
@Override
public void onClick(View v) {
int viewId = v.getId();
if (viewId == R.id.btn_add_food_group) {
toFragmentByFragmentType(NEW_FOOD_GROUP);
}
}
}
...@@ -15,7 +15,6 @@ import com.gingersoft.gsa.cloud.main.R; ...@@ -15,7 +15,6 @@ import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.di.component.DaggerFoodSetComponent; import com.gingersoft.gsa.cloud.main.di.component.DaggerFoodSetComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodSetContract; import com.gingersoft.gsa.cloud.main.mvp.contract.FoodSetContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodSetPresenter; import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodSetPresenter;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
...@@ -25,7 +24,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -25,7 +24,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
/** /**
* 新增食品--套餐編輯頁面 * 新增食品--套餐編輯頁面
*/ */
public class FoodSetFragment extends BaseFragment<FoodSetPresenter> implements FoodSetContract.View { public class FoodSetFragment extends BaseFoodMenuFragment<FoodSetPresenter> implements FoodSetContract.View {
public static FoodSetFragment newInstance() { public static FoodSetFragment newInstance() {
FoodSetFragment fragment = new FoodSetFragment(); FoodSetFragment fragment = new FoodSetFragment();
......
...@@ -10,47 +10,56 @@ import android.view.ViewGroup; ...@@ -10,47 +10,56 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.viewpager.widget.ViewPager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R; import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2; import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerFoodPropertiesComponent; import com.gingersoft.gsa.cloud.main.di.component.DaggerNewFoodComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract; import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodPropertiesPresenter; import com.gingersoft.gsa.cloud.main.mvp.presenter.NewFoodPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuAdapter; import com.gingersoft.gsa.cloud.ui.adapter.TabFragmentAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration; import com.gingersoft.gsa.cloud.ui.view.MyTableView;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
/** /**
* 食品的基本屬性,新增食品 * ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 11/03/2020 10:02
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/ */
public class FoodPropertiesFragment extends BaseFragment<FoodPropertiesPresenter> implements FoodPropertiesContract.View { public class NewFoodFragment extends BaseFoodMenuFragment<NewFoodPresenter> implements NewFoodContract.View {
@BindView(R2.id.topbar_list) @BindView(R2.id.topbar_new_food)
QMUITopBar topbarList; QMUITopBar topbarNewFood;
@BindView(R2.id.rv_content) @BindView(R2.id.table_view_new_food)
RecyclerView rvContent; MyTableView tableViewNewFood;
@BindView(R2.id.btn_save) @BindView(R2.id.new_food_viewpager)
QMUIAlphaButton btnSave; ViewPager newFoodViewpager;
public static FoodPropertiesFragment newInstance() { public static NewFoodFragment newInstance() {
FoodPropertiesFragment fragment = new FoodPropertiesFragment(); NewFoodFragment fragment = new NewFoodFragment();
return fragment; return fragment;
} }
@Override @Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) { public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerFoodPropertiesComponent //如找不到该类,请编译一下项目 DaggerNewFoodComponent //如找不到该类,请编译一下项目
.builder() .builder()
.appComponent(appComponent) .appComponent(appComponent)
.view(this) .view(this)
...@@ -60,15 +69,39 @@ public class FoodPropertiesFragment extends BaseFragment<FoodPropertiesPresenter ...@@ -60,15 +69,39 @@ public class FoodPropertiesFragment extends BaseFragment<FoodPropertiesPresenter
@Override @Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_food_properties, container, false); return inflater.inflate(R.layout.fragment_new_food, container, false);
} }
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
topbarList.setVisibility(View.GONE); initTopBar();
rvContent.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL)); initViewPager();
rvContent.setLayoutManager(new LinearLayoutManager(mContext)); }
rvContent.setAdapter(FoodMenuAdapter.getFoodMenuAdapter(mContext, FoodMenuAdapter.NEW_FOOD_PROPERTIES));
private void initViewPager() {
List<String> titles = new ArrayList<>();
List<Fragment> mFragments = new ArrayList<>();
titles.add("基本屬性");
titles.add("細項");
titles.add("套餐");
mFragments.add(NewlyAddedFragment.newInstance(FOOD_PROPERTIES, null, true));
mFragments.add(EditFoodItemsFragment.newInstance());
mFragments.add(FoodSetFragment.newInstance());
//实例化适配器
TabFragmentAdapter mTabFragmentAdapter = new TabFragmentAdapter(getParentFragmentManager(), 1);
//设置加载的Fragment集合
mTabFragmentAdapter.setFragments(mFragments);
//设置Viewpager的适配器
newFoodViewpager.setAdapter(mTabFragmentAdapter);
//TabLayout绑定ViewPager
tableViewNewFood.setTitles(titles).setupWithViewPager(newFoodViewpager);
}
public void initTopBar() {
topbarNewFood.setTitle("新增食品");
topbarNewFood.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> getParentFragmentManager().popBackStack());
} }
/** /**
...@@ -112,7 +145,6 @@ public class FoodPropertiesFragment extends BaseFragment<FoodPropertiesPresenter ...@@ -112,7 +145,6 @@ public class FoodPropertiesFragment extends BaseFragment<FoodPropertiesPresenter
} }
@Override @Override
public void showLoading(String message) { public void showLoading(String message) {
......
package com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerNewlyAddedComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewlyAddedContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FoodMenuEditBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.NewlyAddedPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.ShellActivity;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import butterknife.BindView;
import static com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration.VERTICAL_LIST;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 11/03/2020 09:53
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class NewlyAddedFragment extends BaseFoodMenuFragment<NewlyAddedPresenter> implements NewlyAddedContract.View {
public static NewlyAddedFragment newInstance(int fragmentType, String title) {
return newInstance(fragmentType, title, false);
}
/**
* @param fragmentType fragment類型
* @param title 標題
* @param isToShellActivity 是否打開帶activity的fragment
*/
public static NewlyAddedFragment newInstance(int fragmentType, String title, boolean isToShellActivity) {
NewlyAddedFragment fragment = new NewlyAddedFragment();
fragment.setArguments(getBundle(fragmentType, title, isToShellActivity));
return fragment;
}
private static Bundle getBundle(int fragmentType, String title, boolean isToShellActivity) {
Bundle bundle = new Bundle();
bundle.putInt(FRAGMENT_TYPE, fragmentType);
bundle.putString(TITLE_KEY, title);
bundle.putBoolean(TO_SHELL_ACTIVITY, isToShellActivity);
return bundle;
}
private int fragmentType;
private String title;
private boolean toShellActivity;
@BindView(R2.id.topbar_list)
QMUITopBar topbarList;
@BindView(R2.id.rv_content)
RecyclerView rvContent;
@BindView(R2.id.btn_save)
QMUIAlphaButton btnSave;
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerNewlyAddedComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_newly_added, container, false);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
if (arguments != null) {
fragmentType = arguments.getInt(FRAGMENT_TYPE);
title = arguments.getString(TITLE_KEY);
toShellActivity = arguments.getBoolean(TO_SHELL_ACTIVITY);
}
initTopBar(title);
//添加自定义分割线
rvContent.addItemDecoration(new DividerItemDecoration(mContext, VERTICAL_LIST));
rvContent.setLayoutManager(new LinearLayoutManager(mContext));
FoodMenuAdapter foodMenuAdapter = FoodMenuAdapter.getFoodMenuAdapter(mContext, fragmentType);
foodMenuAdapter.setOnItemClickListener((adapter, view, position) -> {
if (adapter.getItemViewType(position) == FoodMenuEditBean.EDIT_FOOD_ITEM_SELECT) {
if (toShellActivity) {
Intent intent = new Intent(mContext, ShellActivity.class);
intent.putExtra(FRAGMENT_TYPE, foodMenuAdapter.getData().get(position).getFragmentType());
startActivity(intent);
} else {
toFragmentByFragmentType(foodMenuAdapter.getData().get(position).getFragmentType());
}
} else {
}
});
rvContent.setAdapter(foodMenuAdapter);
}
public void initTopBar(String title) {
if (TextUtil.isNotEmptyOrNullOrUndefined(title)) {
topbarList.setTitle(title);
topbarList.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> {
FragmentActivity activity = getActivity();
if (activity != null) {
activity.onBackPressed();
}
});
} else {
topbarList.setVisibility(View.GONE);
}
}
/**
* 通过此方法可以使 Fragment 能够与外界做一些交互和通信, 比如说外部的 Activity 想让自己持有的某个 Fragment 对象执行一些方法,
* 建议在有多个需要与外界交互的方法时, 统一传 {@link Message}, 通过 what 字段来区分不同的方法, 在 {@link #setData(Object)}
* 方法中就可以 {@code switch} 做不同的操作, 这样就可以用统一的入口方法做多个不同的操作, 可以起到分发的作用
* <p>
* 调用此方法时请注意调用时 Fragment 的生命周期, 如果调用 {@link #setData(Object)} 方法时 {@link Fragment#onCreate(Bundle)} 还没执行
* 但在 {@link #setData(Object)} 里却调用了 Presenter 的方法, 是会报空的, 因为 Dagger 注入是在 {@link Fragment#onCreate(Bundle)} 方法中执行的
* 然后才创建的 Presenter, 如果要做一些初始化操作,可以不必让外部调用 {@link #setData(Object)}, 在 {@link #initData(Bundle)} 中初始化就可以了
* <p>
* Example usage:
* <pre>
* public void setData(@Nullable Object data) {
* if (data != null && data instanceof Message) {
* switch (((Message) data).what) {最近更新
* case 0:
* loadData(((Message) data).arg1);
* break;
* case 1:
* refreshUI();
* break;
* default:
* //do something
* break;
* }
* }
* }
*
* // call setData(Object):
* Message data = new Message();
* data.what = 0;
* data.arg1 = 1;
* fragment.setData(data);
* </pre>
*
* @param data 当不需要参数时 {@code data} 可以为 {@code null}
*/
@Override
public void setData(@Nullable Object data) {
}
@Override
public void showLoading(String message) {
}
@Override
public void hideLoading() {
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public boolean onBackPressedSupport() {
return super.onBackPressedSupport();
}
@Override
public void killMyself() {
}
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_radio_checked" android:state_checked="true" />
<item android:drawable="@drawable/ic_radio_uncheck" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/layout_food_menu_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar_food_menu"
android:layout_width="match_parent"
android:layout_height="@dimen/head_height"
android:background="@color/theme_color"
android:fitsSystemWindows="true"
app:qmui_topbar_title_color="@color/theme_white_color" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_food_menu_food_classification"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/btn_add_food_group"
android:background="@color/color_f3" />
<Button
android:id="@+id/btn_add_food_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/theme_color"
android:text="+食品組"
android:textColor="@color/white"
android:textSize="@dimen/dp_16" />
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_food_menu_all_food"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3.5"
android:orientation="vertical" /> android:orientation="vertical" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/layout_food_menu_shell_content"
android:layout_height="match_parent"
android:orientation="vertical" />
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar_list"
android:layout_width="match_parent"
android:layout_height="@dimen/head_height"
android:background="@color/theme_color"
android:fitsSystemWindows="true"
app:qmui_topbar_title_color="@color/theme_white_color" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_content"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
style="@style/MainFoodMenuEditItemLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_20"
android:textColor="@color/theme_color"
android:textSize="@dimen/dp_16"
android:textStyle="bold"
tools:text="三文魚刺身:" />
<include layout="@layout/item_thick_line" />
<FrameLayout
style="@style/MainFoodMenuEditItemLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_add_item"
style="@style/MainFoodMenuThemeColorTitleStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_20"
android:text="加配細項+"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_food_item_manger"
style="@style/MainFoodMenuThemeColorTitleStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:background="@drawable/shape_border_no_corner_bg"
android:paddingLeft="@dimen/dp_8"
android:paddingTop="@dimen/dp_6"
android:paddingRight="@dimen/dp_8"
android:paddingBottom="@dimen/dp_6"
android:text="細項管理" />
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10">
<TextView
style="@style/MainFoodMenuThemeColorTitleStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="細項組名稱" />
<TextView
style="@style/MainFoodMenuThemeColorTitleStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="最小數量" />
<TextView
style="@style/MainFoodMenuThemeColorTitleStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="最大數量" />
<TextView
style="@style/MainFoodMenuThemeColorTitleStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:gravity="center"
android:text="操作" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_food_items"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar_food_menu"
android:layout_width="match_parent"
android:layout_height="@dimen/head_height"
android:background="@color/theme_color"
android:fitsSystemWindows="true"
app:qmui_topbar_title_color="@color/theme_white_color" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_food_menu_food_classification"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/btn_add_food_group"
android:background="@color/color_f3" />
<Button
android:id="@+id/btn_add_food_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/theme_color"
android:text="+食品組"
android:textColor="@color/white"
android:textSize="@dimen/dp_16" />
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_food_menu_all_food"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3.5"
android:orientation="vertical" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar_new_food"
android:layout_width="match_parent"
android:layout_height="@dimen/head_height"
android:background="@color/theme_color"
android:fitsSystemWindows="true"
app:qmui_topbar_text_btn_color_state_list="@color/theme_white_color"
app:qmui_topbar_title_color="@color/theme_white_color" />
<com.gingersoft.gsa.cloud.ui.view.MyTableView
android:id="@+id/table_view_new_food"
android:layout_width="match_parent"
android:layout_height="@dimen/tabIndicator_height"
app:tabBackground="@color/white"
app:tabIndicator="@drawable/tablayout_indicator"
app:tabIndicatorColor="@color/theme_color"
app:tabIndicatorFullWidth="true" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/new_food_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/include_list_save_layout" />
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<RadioButton
android:id="@+id/rb_food_menu_item"
style="@style/MainFoodMenuEditItemTitleStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableLeft="@drawable/selector_radio_bg"
android:button="@null"
android:background="@null"
android:drawablePadding="@dimen/dp_6"
tools:text="H5" />
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tool="http://schemas.android.com/tools"
android:id="@+id/layout_food_menu_select"
style="@style/MainFoodMenuEditItemLayoutStyle"
android:layout_width="match_parent">
<TextView
android:id="@+id/tv_food_menu_required"
style="@style/MainFoodMenuRequiredStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*" />
<TextView
android:id="@+id/tv_food_menu_title"
style="@style/MainFoodMenuEditItemTitleStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tool:text="顯示端" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_radio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_20" />
</LinearLayout>
\ No newline at end of file
...@@ -31,7 +31,10 @@ ...@@ -31,7 +31,10 @@
<item name="android:textColor">@color/color_3c</item> <item name="android:textColor">@color/color_3c</item>
<item name="android:textSize">@dimen/dp_16</item> <item name="android:textSize">@dimen/dp_16</item>
</style> </style>
<style name="MainFoodMenuThemeColorTitleStyle">
<item name="android:textColor">@color/theme_color</item>
<item name="android:textSize">@dimen/dp_16</item>
</style>
<style name="MainFoodMenuEditItemHintStyle"> <style name="MainFoodMenuEditItemHintStyle">
<item name="android:textColor">@color/theme_333_color</item> <item name="android:textColor">@color/theme_333_color</item>
<item name="android:textSize">@dimen/dp_16</item> <item name="android:textSize">@dimen/dp_16</item>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment