Commit 04daf44e by Wyh

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

Signed-off-by: Wyh <1239658231>
parent 4cce725c
......@@ -16,7 +16,6 @@ public class TabFragmentAdapter extends FragmentStatePagerAdapter {
public TabFragmentAdapter(@NonNull FragmentManager fm, int behavior) {
super(fm, behavior);
}
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
private void organizeData(int position, List<PrjBean.DataBean.Bean> prjData) {
if (prjData.get(position).getParentId() == 0) {
//是主食品,判斷有沒有子食品,如果沒有子食品,直接打印主食品
if (position + 1 > prjData.size() ||
(position + 1 < prjData.size() && prjData.get(position + 1).getParentId() == 0)) {
if (position + 1 > prjData.size()) {
//沒有子食品
//直接打印
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<>();
......
......@@ -17,16 +17,7 @@
android:networkSecurityConfig="@xml/network_android"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".mvp.ui.activity.menu.NewTimePeriodActivity" />
<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.menu.ShellActivity" />
<activity android:name=".mvp.ui.activity.NewMainActivity" />
<activity android:name=".mvp.ui.activity.ExpandListActivity" />
<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;
import dagger.BindsInstance;
import dagger.Component;
import com.gingersoft.gsa.cloud.main.di.module.EditFoodModule;
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.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.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodItemsFragment;
import dagger.BindsInstance;
import dagger.Component;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@FragmentScope
@Component(modules = FoodItemsModule.class, dependencies = AppComponent.class)
public interface FoodItemsComponent {
void inject(FoodItemsFragment fragment);
@Component(modules = EditFoodModule.class, dependencies = AppComponent.class)
public interface EditFoodComponent {
void inject(EditFoodFragment fragment);
@Component.Builder
interface Builder {
@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;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.NewTimePeriodModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewTimePeriodContract;
import com.gingersoft.gsa.cloud.main.di.module.EditFoodItemsModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewTimePeriodActivity;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.EditFoodItemsFragment;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = NewTimePeriodModule.class, dependencies = AppComponent.class)
public interface NewTimePeriodComponent {
void inject(NewTimePeriodActivity activity);
@FragmentScope
@Component(modules = EditFoodItemsModule.class, dependencies = AppComponent.class)
public interface EditFoodItemsComponent {
void inject(EditFoodItemsFragment fragment);
@Component.Builder
interface Builder {
@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;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.FoodPropertiesModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract;
import com.gingersoft.gsa.cloud.main.di.module.FoodMenuModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuContract;
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:
* <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="https://github.com/JessYanCoding">Follow 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
* ================================================
*/
@FragmentScope
@Component(modules = FoodPropertiesModule.class, dependencies = AppComponent.class)
public interface FoodPropertiesComponent {
void inject(FoodPropertiesFragment fragment);
@Component(modules = FoodMenuModule.class, dependencies = AppComponent.class)
public interface FoodMenuComponent {
void inject(FoodMenuFragment fragment);
@Component.Builder
interface Builder {
@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;
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.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.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;
@ActivityScope
@Component(modules = NewFoodModule.class, dependencies = AppComponent.class)
public interface NewFoodComponent {
void inject(NewFoodActivity activity);
void inject(NewFoodFragment activity);
@Component.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;
import dagger.BindsInstance;
import dagger.Component;
import com.gingersoft.gsa.cloud.main.di.module.NewlyAddedModule;
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.scope.FragmentScope;
import com.gingersoft.gsa.cloud.main.di.module.NewFoodTypeModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodTypeContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.NewFoodTypeActivity;
import dagger.BindsInstance;
import dagger.Component;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = NewFoodTypeModule.class, dependencies = AppComponent.class)
public interface NewFoodTypeComponent {
void inject(NewFoodTypeActivity activity);
@FragmentScope
@Component(modules = NewlyAddedModule.class, dependencies = AppComponent.class)
public interface NewlyAddedComponent {
void inject(NewlyAddedFragment fragment);
@Component.Builder
interface Builder {
@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;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.FoodDetailsModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodDetailsContract;
import com.gingersoft.gsa.cloud.main.di.module.ShellModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.ShellContract;
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:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@ActivityScope
@Component(modules = FoodDetailsModule.class, dependencies = AppComponent.class)
public interface FoodDetailsComponent {
void inject(FoodDetailsActivity activity);
@Component(modules = ShellModule.class, dependencies = AppComponent.class)
public interface ShellComponent {
void inject(ShellActivity activity);
@Component.Builder
interface Builder {
@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;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewTimePeriodContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewTimePeriodModel;
import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
import com.gingersoft.gsa.cloud.main.mvp.model.EditFoodItemsModel;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@Module
public abstract class NewTimePeriodModule {
public abstract class EditFoodItemsModule {
@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;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract;
import com.gingersoft.gsa.cloud.main.mvp.model.FoodItemsModel;
import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodContract;
import com.gingersoft.gsa.cloud.main.mvp.model.EditFoodModel;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@Module
public abstract class FoodItemsModule {
public abstract class EditFoodModule {
@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;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract;
import com.gingersoft.gsa.cloud.main.mvp.model.FoodPropertiesModel;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuContract;
import com.gingersoft.gsa.cloud.main.mvp.model.FoodMenuModel;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@Module
public abstract class FoodPropertiesModule {
public abstract class FoodMenuModule {
@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;
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.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;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewAddFoodGroupContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewAddFoodGroupModel;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewlyAddedContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewlyAddedModel;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@Module
public abstract class NewAddFoodGroupModule {
public abstract class NewlyAddedModule {
@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;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodTypeContract;
import com.gingersoft.gsa.cloud.main.mvp.model.NewFoodTypeModel;
import com.gingersoft.gsa.cloud.main.mvp.contract.ShellContract;
import com.gingersoft.gsa.cloud.main.mvp.model.ShellModel;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@Module
public abstract class NewFoodTypeModule {
public abstract class ShellModule {
@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;
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface FoodItemsContract {
public interface EditFoodContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
......
......@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel;
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface FoodPropertiesContract {
public interface EditFoodItemsContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
......
......@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel;
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface SelectFoodTypeContract {
public interface FoodMenuContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
......
......@@ -8,7 +8,7 @@ import com.jess.arms.mvp.IModel;
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -16,7 +16,7 @@ import com.jess.arms.mvp.IModel;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface SelectTimePeriodContract {
public interface NewlyAddedContract {
//对于经常使用的关于UI的方法可以定义到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 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;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class NewSelectPeriodModule {
public interface ShellContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
@Binds
abstract NewSelectPeriodContract.Model bindNewSelectPeriodModel(NewSelectPeriodModel model);
}
\ No newline at end of file
}
}
......@@ -10,14 +10,14 @@ import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract;
import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@FragmentScope
public class FoodItemsModel extends BaseModel implements FoodItemsContract.Model {
public class EditFoodItemsModel extends BaseModel implements EditFoodItemsContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public FoodItemsModel(IRepositoryManager repositoryManager) {
public EditFoodItemsModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
......
......@@ -6,18 +6,18 @@ import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
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 com.gingersoft.gsa.cloud.main.mvp.contract.SelectTimePeriodContract;
import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodContract;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class SelectTimePeriodModel extends BaseModel implements SelectTimePeriodContract.Model {
@FragmentScope
public class EditFoodModel extends BaseModel implements EditFoodContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public SelectTimePeriodModel(IRepositoryManager repositoryManager) {
public EditFoodModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
......
package com.gingersoft.gsa.cloud.main.mvp.presenter;
package com.gingersoft.gsa.cloud.main.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewSelectPeriodContract;
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 com.gingersoft.gsa.cloud.main.mvp.contract.FoodMenuContract;
import com.google.gson.Gson;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import javax.inject.Inject;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -25,28 +23,22 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class NewSelectPeriodPresenter extends BasePresenter<NewSelectPeriodContract.Model, NewSelectPeriodContract.View> {
@FragmentScope
public class FoodMenuModel extends BaseModel implements FoodMenuContract.Model {
@Inject
RxErrorHandler mErrorHandler;
Gson mGson;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public NewSelectPeriodPresenter(NewSelectPeriodContract.Model model, NewSelectPeriodContract.View rootView) {
super(model, rootView);
public FoodMenuModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mGson = null;
this.mApplication = null;
}
}
}
\ No newline at end of file
......@@ -10,14 +10,14 @@ import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewlyAddedContract;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@FragmentScope
public class FoodPropertiesModel extends BaseModel implements FoodPropertiesContract.Model {
public class NewlyAddedModel extends BaseModel implements NewlyAddedContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public FoodPropertiesModel(IRepositoryManager repositoryManager) {
public NewlyAddedModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
......
......@@ -10,14 +10,14 @@ import com.jess.arms.di.scope.ActivityScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.SelectFoodTypeContract;
import com.gingersoft.gsa.cloud.main.mvp.contract.ShellContract;
/**
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow 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;
* ================================================
*/
@ActivityScope
public class SelectFoodTypeModel extends BaseModel implements SelectFoodTypeContract.Model {
public class ShellModel extends BaseModel implements ShellContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public SelectFoodTypeModel(IRepositoryManager repositoryManager) {
public ShellModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
......
......@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import java.util.List;
import lombok.Data;
import me.yokeyword.fragmentation.ISupportFragment;
@Data
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_RADIO = 7;
public int itemType;
......@@ -94,12 +99,20 @@ public class FoodMenuEditBean {
*/
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 isEdit = true;
/**
* 顯示端
*/
......@@ -126,7 +139,13 @@ public class FoodMenuEditBean {
this.showTitle = showTitle;
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) {
this.itemType = itemType;
this.showTitle = showTitle;
......@@ -142,12 +161,12 @@ public class FoodMenuEditBean {
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.showTitle = showTitle;
this.isRequired = isRequired;
this.hintText = hintText;
this.cls = cls;
this.fragmentType = fragmentType;
}
public FoodMenuEditBean(int itemType, String showTitle, boolean isRequired, boolean showState) {
......
......@@ -2,8 +2,8 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewTimePeriodContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
......@@ -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
public class NewTimePeriodPresenter extends BasePresenter<NewTimePeriodContract.Model, NewTimePeriodContract.View> {
@FragmentScope
public class EditFoodItemsPresenter extends BasePresenter<EditFoodItemsContract.Model, EditFoodItemsContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -37,7 +28,7 @@ public class NewTimePeriodPresenter extends BasePresenter<NewTimePeriodContract.
AppManager mAppManager;
@Inject
public NewTimePeriodPresenter(NewTimePeriodContract.Model model, NewTimePeriodContract.View rootView) {
public EditFoodItemsPresenter(EditFoodItemsContract.Model model, EditFoodItemsContract.View rootView) {
super(model, rootView);
}
......
......@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
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.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -26,7 +26,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================
*/
@FragmentScope
public class FoodItemsPresenter extends BasePresenter<FoodItemsContract.Model, FoodItemsContract.View> {
public class EditFoodPresenter extends BasePresenter<EditFoodContract.Model, EditFoodContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -37,7 +37,7 @@ public class FoodItemsPresenter extends BasePresenter<FoodItemsContract.Model, F
AppManager mAppManager;
@Inject
public FoodItemsPresenter(FoodItemsContract.Model model, FoodItemsContract.View rootView) {
public EditFoodPresenter(EditFoodContract.Model model, EditFoodContract.View rootView) {
super(model, rootView);
}
......
......@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
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.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -26,7 +26,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================
*/
@FragmentScope
public class FoodPropertiesPresenter extends BasePresenter<FoodPropertiesContract.Model, FoodPropertiesContract.View> {
public class FoodMenuPresenter extends BasePresenter<FoodMenuContract.Model, FoodMenuContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -37,7 +37,7 @@ public class FoodPropertiesPresenter extends BasePresenter<FoodPropertiesContrac
AppManager mAppManager;
@Inject
public FoodPropertiesPresenter(FoodPropertiesContract.Model model, FoodPropertiesContract.View rootView) {
public FoodMenuPresenter(FoodMenuContract.Model model, FoodMenuContract.View rootView) {
super(model, rootView);
}
......
......@@ -2,8 +2,8 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewFoodTypeContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewlyAddedContract;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
......@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -25,8 +25,8 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class NewFoodTypePresenter extends BasePresenter<NewFoodTypeContract.Model, NewFoodTypeContract.View> {
@FragmentScope
public class NewlyAddedPresenter extends BasePresenter<NewlyAddedContract.Model, NewlyAddedContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -37,7 +37,7 @@ public class NewFoodTypePresenter extends BasePresenter<NewFoodTypeContract.Mode
AppManager mAppManager;
@Inject
public NewFoodTypePresenter(NewFoodTypeContract.Model model, NewFoodTypeContract.View rootView) {
public NewlyAddedPresenter(NewlyAddedContract.Model model, NewlyAddedContract.View 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;
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.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -17,7 +17,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -26,7 +26,7 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
* ================================================
*/
@ActivityScope
public class FoodDetailsPresenter extends BasePresenter<FoodDetailsContract.Model, FoodDetailsContract.View> {
public class ShellPresenter extends BasePresenter<ShellContract.Model, ShellContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -37,7 +37,7 @@ public class FoodDetailsPresenter extends BasePresenter<FoodDetailsContract.Mode
AppManager mAppManager;
@Inject
public FoodDetailsPresenter(FoodDetailsContract.Model model, FoodDetailsContract.View rootView) {
public ShellPresenter(ShellContract.Model model, ShellContract.View 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;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
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.DaggerFoodMenuManageComponent;
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.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.gingersoft.gsa.cloud.main.mvp.ui.fragment.menu.FoodMenuFragment;
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.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;
......@@ -46,19 +31,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter> implements FoodMenuManageContract.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 class FoodMenuManageActivity extends BaseFragmentActivity<FoodMenuManagePresenter> implements FoodMenuManageContract.View {
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
......@@ -77,43 +50,7 @@ public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter
@Override
public void initData(@Nullable Bundle savedInstanceState) {
leftRv.setLayoutManager(new LinearLayoutManager(mContext));
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);
}
});
loadRootFragment(R.id.layout_food_menu_content, FoodMenuFragment.newInstance());
}
@Override
......@@ -123,12 +60,7 @@ public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter
@Override
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
......@@ -176,12 +108,4 @@ public class FoodMenuManageActivity extends BaseActivity<FoodMenuManagePresenter
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;
import androidx.annotation.Nullable;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.di.component.DaggerAddFoodItemsComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.AddFoodItemsContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.AddFoodItemsPresenter;
import com.gingersoft.gsa.cloud.main.di.component.DaggerShellComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.ShellContract;
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.jess.arms.base.BaseActivity;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.di.component.AppComponent;
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;
......@@ -22,7 +26,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* ================================================
* Description:
* <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="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -30,11 +34,11 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <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
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerAddFoodItemsComponent //如找不到该类,请编译一下项目
DaggerShellComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
......@@ -44,12 +48,19 @@ public class AddFoodItemsActivity extends BaseActivity<AddFoodItemsPresenter> im
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_add_food_items;
return R.layout.activity_shell;
}
@Override
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
......
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;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.TextView;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
......@@ -42,12 +40,4 @@ public class SelectItemProvider extends FoodMenuItemProvider {
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;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.di.component.DaggerFoodItemsComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodItemsContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodItemsPresenter;
import com.jess.arms.base.BaseFragment;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerEditFoodItemsComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.EditFoodItemsContract;
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.utils.ArmsUtils;
import butterknife.BindView;
import butterknife.OnClick;
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() {
FoodItemsFragment fragment = new FoodItemsFragment();
public static EditFoodItemsFragment newInstance() {
EditFoodItemsFragment fragment = new EditFoodItemsFragment();
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerFoodItemsComponent //如找不到该类,请编译一下项目
DaggerEditFoodItemsComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
......@@ -44,7 +66,7 @@ public class FoodItemsFragment extends BaseFragment<FoodItemsPresenter> implemen
@Override
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
......@@ -119,4 +141,20 @@ public class FoodItemsFragment extends BaseFragment<FoodItemsPresenter> implemen
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;
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.presenter.FoodSetPresenter;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
......@@ -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() {
FoodSetFragment fragment = new FoodSetFragment();
......
......@@ -10,47 +10,56 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
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.DaggerFoodPropertiesComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.FoodPropertiesContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.FoodPropertiesPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.foodmenu.FoodMenuAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.jess.arms.base.BaseFragment;
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.ui.adapter.TabFragmentAdapter;
import com.gingersoft.gsa.cloud.ui.view.MyTableView;
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;
/**
* 食品的基本屬性,新增食品
* ================================================
* 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)
QMUITopBar topbarList;
@BindView(R2.id.rv_content)
RecyclerView rvContent;
@BindView(R2.id.btn_save)
QMUIAlphaButton btnSave;
@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;
public static FoodPropertiesFragment newInstance() {
FoodPropertiesFragment fragment = new FoodPropertiesFragment();
public static NewFoodFragment newInstance() {
NewFoodFragment fragment = new NewFoodFragment();
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerFoodPropertiesComponent //如找不到该类,请编译一下项目
DaggerNewFoodComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
......@@ -60,15 +69,39 @@ public class FoodPropertiesFragment extends BaseFragment<FoodPropertiesPresenter
@Override
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
public void initData(@Nullable Bundle savedInstanceState) {
topbarList.setVisibility(View.GONE);
rvContent.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
rvContent.setLayoutManager(new LinearLayoutManager(mContext));
rvContent.setAdapter(FoodMenuAdapter.getFoodMenuAdapter(mContext, FoodMenuAdapter.NEW_FOOD_PROPERTIES));
initTopBar();
initViewPager();
}
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
}
@Override
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"?>
<LinearLayout 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"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/layout_food_menu_content"
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
android:orientation="vertical" />
<?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 @@
<item name="android:textColor">@color/color_3c</item>
<item name="android:textSize">@dimen/dp_16</item>
</style>
<style name="MainFoodMenuThemeColorTitleStyle">
<item name="android:textColor">@color/theme_color</item>
<item name="android:textSize">@dimen/dp_16</item>
</style>
<style name="MainFoodMenuEditItemHintStyle">
<item name="android:textColor">@color/theme_333_color</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