From 76535d56f293346c7541310bfbb83189d61bbc2c Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Fri, 25 Jun 2021 17:29:39 -0700 Subject: [PATCH] Adds editing support for other traits using some shared fragments. --- .../monstercards/data/enums/TraitType.java | 10 + .../ui/editmonster/EditMonsterFragment.java | 31 ++- .../ui/editmonster/EditMonsterViewModel.java | 234 ++++++++---------- ...tyFragment.java => EditTraitFragment.java} | 15 +- ...agment.java => EditTraitListFragment.java} | 71 ++++-- ...ava => EditTraitsRecyclerViewAdapter.java} | 11 +- ...list.xml => fragment_edit_traits_list.xml} | 6 +- ...xml => fragment_edit_traits_list_item.xml} | 2 +- .../main/res/navigation/mobile_navigation.xml | 32 ++- app/src/main/res/values/strings.xml | 3 +- 10 files changed, 228 insertions(+), 187 deletions(-) create mode 100644 app/src/main/java/com/majinnaibu/monstercards/data/enums/TraitType.java rename app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/{EditAbilityFragment.java => EditTraitFragment.java} (84%) rename app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/{EditAbilitiesFragment.java => EditTraitListFragment.java} (51%) rename app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/{EditAbilitiesRecyclerViewAdapter.java => EditTraitsRecyclerViewAdapter.java} (75%) rename app/src/main/res/layout/{fragment_edit_abilities_list.xml => fragment_edit_traits_list.xml} (90%) rename app/src/main/res/layout/{fragment_edit_abilities_list_item.xml => fragment_edit_traits_list_item.xml} (96%) diff --git a/app/src/main/java/com/majinnaibu/monstercards/data/enums/TraitType.java b/app/src/main/java/com/majinnaibu/monstercards/data/enums/TraitType.java new file mode 100644 index 0000000..ab7e858 --- /dev/null +++ b/app/src/main/java/com/majinnaibu/monstercards/data/enums/TraitType.java @@ -0,0 +1,10 @@ +package com.majinnaibu.monstercards.data.enums; + +public enum TraitType { + ABILITY, + ACTION, + LAIR_ACTION, + LEGENDARY_ACTION, + REGIONAL_ACTION, + REACTIONS +} diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterFragment.java index 1841e13..f30614d 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterFragment.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterFragment.java @@ -19,6 +19,7 @@ import androidx.navigation.Navigation; import com.google.android.material.snackbar.Snackbar; import com.majinnaibu.monstercards.R; import com.majinnaibu.monstercards.data.MonsterRepository; +import com.majinnaibu.monstercards.data.enums.TraitType; import com.majinnaibu.monstercards.models.Monster; import com.majinnaibu.monstercards.ui.monster.MonsterDetailFragmentArgs; import com.majinnaibu.monstercards.ui.shared.MCFragment; @@ -146,10 +147,36 @@ public class EditMonsterFragment extends MCFragment { }); mHolder.abilities.setOnClickListener(v -> { - NavDirections action = EditMonsterFragmentDirections.actionEditMonsterFragmentToEditAbilitiesFragment(); + NavDirections action = EditMonsterFragmentDirections.actionEditMonsterFragmentToEditTraitListFragment(TraitType.ABILITY); Navigation.findNavController(requireView()).navigate(action); }); + mHolder.actions.setOnClickListener(v -> { + NavDirections action = EditMonsterFragmentDirections.actionEditMonsterFragmentToEditTraitListFragment(TraitType.ACTION); + Navigation.findNavController(requireView()).navigate(action); + }); + + mHolder.lairActions.setOnClickListener(v -> { + NavDirections action = EditMonsterFragmentDirections.actionEditMonsterFragmentToEditTraitListFragment(TraitType.LAIR_ACTION); + Navigation.findNavController(requireView()).navigate(action); + }); + + mHolder.legendaryActions.setOnClickListener(v -> { + NavDirections action = EditMonsterFragmentDirections.actionEditMonsterFragmentToEditTraitListFragment(TraitType.LEGENDARY_ACTION); + Navigation.findNavController(requireView()).navigate(action); + }); + + mHolder.reactions.setOnClickListener(v -> { + NavDirections action = EditMonsterFragmentDirections.actionEditMonsterFragmentToEditTraitListFragment(TraitType.REACTIONS); + Navigation.findNavController(requireView()).navigate(action); + }); + + mHolder.regionalActions.setOnClickListener(v -> { + NavDirections action = EditMonsterFragmentDirections.actionEditMonsterFragmentToEditTraitListFragment(TraitType.REGIONAL_ACTION); + Navigation.findNavController(requireView()).navigate(action); + }); + + requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) { @Override public void handleOnBackPressed() { @@ -241,4 +268,4 @@ public class EditMonsterFragment extends MCFragment { regionalActions = root.findViewById(R.id.regionalActions); } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterViewModel.java b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterViewModel.java index 58c990c..7cf7c32 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterViewModel.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterViewModel.java @@ -9,6 +9,7 @@ import com.majinnaibu.monstercards.data.enums.AdvantageType; import com.majinnaibu.monstercards.data.enums.ArmorType; import com.majinnaibu.monstercards.data.enums.ChallengeRating; import com.majinnaibu.monstercards.data.enums.ProficiencyType; +import com.majinnaibu.monstercards.data.enums.TraitType; import com.majinnaibu.monstercards.helpers.StringHelper; import com.majinnaibu.monstercards.models.Language; import com.majinnaibu.monstercards.models.Monster; @@ -16,6 +17,7 @@ import com.majinnaibu.monstercards.models.Skill; import com.majinnaibu.monstercards.models.Trait; import com.majinnaibu.monstercards.ui.shared.ChangeTrackedViewModel; import com.majinnaibu.monstercards.utils.ChangeTrackedLiveData; +import com.majinnaibu.monstercards.utils.Logger; import java.util.ArrayList; import java.util.Collections; @@ -740,14 +742,14 @@ public class EditMonsterViewModel extends ChangeTrackedViewModel { return mTelepathyRange; } - public int getTelepathyRangeUnboxed() { - return Helpers.unboxInteger(mTelepathyRange.getValue(), 0); - } - public void setTelepathyRange(int telepathyRange) { mTelepathyRange.setValue(telepathyRange); } + public int getTelepathyRangeUnboxed() { + return Helpers.unboxInteger(mTelepathyRange.getValue(), 0); + } + public LiveData getUnderstandsButDescription() { return mUnderstandsButDescription; } @@ -923,133 +925,6 @@ public class EditMonsterViewModel extends ChangeTrackedViewModel { Helpers.replaceItemInList(mLanguages, oldLanguage, newLanguage, Language::compareTo); } - public LiveData> getAbilities() { - return mAbilities; - } - - public List getAbilitiesArray() { - return mAbilities.getValue(); - } - - public Trait addNewAbility() { - Trait newAbility = new Trait("", ""); - return Helpers.addItemToList(mAbilities, newAbility, Trait::compareTo); - } - - public void removeAbility(int position) { - Helpers.removeFromList(mAbilities, position); - } - - public void replaceAbility(Trait oldAbility, Trait newAbility) { - Helpers.replaceItemInList(mAbilities, oldAbility, newAbility); - } - - - public LiveData> getActions() { - return mActions; - } - - public List getActionsArray() { - return mActions.getValue(); - } - - public Trait addNewAction() { - Trait newAction = new Trait("", ""); - return Helpers.addItemToList(mActions, newAction, Trait::compareTo); - } - - public void removeAction(int position) { - Helpers.removeFromList(mActions, position); - } - - public void replaceAction(Trait oldAction, Trait newAction) { - Helpers.replaceItemInList(mActions, oldAction, newAction); - } - - public LiveData> getReactions() { - return mReactions; - } - - public List getReactionsArray() { - return mReactions.getValue(); - } - - public Trait addNewReaction() { - Trait newReaction = new Trait("", ""); - return Helpers.addItemToList(mReactions, newReaction, Trait::compareTo); - } - - public void removeReaction(int position) { - Helpers.removeFromList(mReactions, position); - } - - public void replaceReaction(Trait oldReaction, Trait newReaction) { - Helpers.replaceItemInList(mReactions, oldReaction, newReaction); - } - - public LiveData> getLairActions() { - return mLairActions; - } - - public List getLairActionsArray() { - return mLairActions.getValue(); - } - - public Trait addNewLairAction() { - Trait newLairAction = new Trait("", ""); - return Helpers.addItemToList(mLairActions, newLairAction, Trait::compareTo); - } - - public void removeLairAction(int position) { - Helpers.removeFromList(mLairActions, position); - } - - public void replaceLairAction(Trait oldLairAction, Trait newLairAction) { - Helpers.replaceItemInList(mLairActions, oldLairAction, newLairAction); - } - - public LiveData> getLegendaryActions() { - return mLegendaryActions; - } - - public List getLegendaryActionsArray() { - return mLegendaryActions.getValue(); - } - - public Trait addNewLegendaryAction() { - Trait newLegendaryAction = new Trait("", ""); - return Helpers.addItemToList(mLegendaryActions, newLegendaryAction, Trait::compareTo); - } - - public void removeLegendaryAction(int position) { - Helpers.removeFromList(mLegendaryActions, position); - } - - public void replaceLegendaryAction(Trait oldLegendaryAction, Trait newLegendaryAction) { - Helpers.replaceItemInList(mLegendaryActions, oldLegendaryAction, newLegendaryAction); - } - - public LiveData> getRegionalActions() { - return mRegionalActions; - } - - public List getRegionalActionsArray() { - return mRegionalActions.getValue(); - } - - public Trait addNewRegionalAction() { - Trait newRegionalAction = new Trait("", ""); - return Helpers.addItemToList(mRegionalActions, newRegionalAction, Trait::compareTo); - } - - public void removeRegionalAction(int position) { - Helpers.removeFromList(mRegionalActions, position); - } - - public void replaceRegionalAction(Trait oldRegionalAction, Trait newRegionalAction) { - Helpers.replaceItemInList(mRegionalActions, oldRegionalAction, newRegionalAction); - } - public Monster buildMonster() { Monster monster = new Monster(); @@ -1114,12 +989,107 @@ public class EditMonsterViewModel extends ChangeTrackedViewModel { return monster; } + public LiveData> getTraits(TraitType type) { + switch (type) { + case ABILITY: + return mAbilities; + case ACTION: + return mActions; + case LAIR_ACTION: + return mLairActions; + case LEGENDARY_ACTION: + return mLegendaryActions; + case REACTIONS: + return mReactions; + case REGIONAL_ACTION: + return mRegionalActions; + default: + Logger.logWTF(String.format("Unrecognized TraitType: %s", type)); + return null; + } + } + + public void removeTrait(TraitType type, int position) { + switch (type) { + case ABILITY: + Helpers.removeFromList(mAbilities, position); + break; + case ACTION: + Helpers.removeFromList(mActions, position); + break; + case LAIR_ACTION: + Helpers.removeFromList(mLairActions, position); + break; + case LEGENDARY_ACTION: + Helpers.removeFromList(mLegendaryActions, position); + break; + case REACTIONS: + Helpers.removeFromList(mReactions, position); + break; + case REGIONAL_ACTION: + Helpers.removeFromList(mRegionalActions, position); + break; + default: + Logger.logWTF(String.format("Unrecognized TraitType: %s", type)); + } + } + + public void replaceTrait(TraitType type, Trait oldTrait, Trait newTrait) { + switch (type) { + case ABILITY: + Helpers.replaceItemInList(mAbilities, oldTrait, newTrait); + break; + case ACTION: + Helpers.replaceItemInList(mActions, oldTrait, newTrait); + break; + case LAIR_ACTION: + Helpers.replaceItemInList(mLairActions, oldTrait, newTrait); + break; + case LEGENDARY_ACTION: + Helpers.replaceItemInList(mLegendaryActions, oldTrait, newTrait); + break; + case REACTIONS: + Helpers.replaceItemInList(mReactions, oldTrait, newTrait); + break; + case REGIONAL_ACTION: + Helpers.replaceItemInList(mRegionalActions, oldTrait, newTrait); + break; + default: + Logger.logWTF(String.format("Unrecognized TraitType: %s", type)); + } + } + + public Trait addNewTrait(TraitType type) { + Trait newAction = new Trait("", ""); + switch (type) { + case ABILITY: + return Helpers.addItemToList(mAbilities, newAction); + case ACTION: + return Helpers.addItemToList(mActions, newAction); + case LAIR_ACTION: + return Helpers.addItemToList(mLairActions, newAction); + case LEGENDARY_ACTION: + return Helpers.addItemToList(mLegendaryActions, newAction); + case REACTIONS: + return Helpers.addItemToList(mReactions, newAction); + case REGIONAL_ACTION: + return Helpers.addItemToList(mRegionalActions, newAction); + default: + Logger.logWTF(String.format("Unrecognized TraitType: %s", type)); + return null; + } + } + @SuppressWarnings("SameParameterValue") private static class Helpers { static String addStringToList(String newString, MutableLiveData> strings) { return addItemToList(strings, newString, String::compareToIgnoreCase); } + static T addItemToList(MutableLiveData> listData, T newItem) { + return addItemToList(listData, newItem, null); + } + static T addItemToList(MutableLiveData> listData, T newItem, Comparator comparator) { ArrayList newList = new ArrayList<>(listData.getValue()); newList.add(newItem); @@ -1174,7 +1144,7 @@ public class EditMonsterViewModel extends ChangeTrackedViewModel { boolean hasReplaced = false; ArrayList newList = new ArrayList<>(oldList.size()); for (T item : oldList) { - if (Objects.equals(item, oldItem)) { + if (!hasReplaced && Objects.equals(item, oldItem)) { newList.add(newItem); hasReplaced = true; } else { diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditAbilityFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitFragment.java similarity index 84% rename from app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditAbilityFragment.java rename to app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitFragment.java index ee3a4e9..e227340 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditAbilityFragment.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitFragment.java @@ -15,26 +15,29 @@ import androidx.navigation.NavController; import androidx.navigation.Navigation; import com.majinnaibu.monstercards.R; +import com.majinnaibu.monstercards.data.enums.TraitType; import com.majinnaibu.monstercards.models.Trait; import com.majinnaibu.monstercards.ui.shared.MCFragment; import com.majinnaibu.monstercards.utils.Logger; import com.majinnaibu.monstercards.utils.TextChangedListener; -public class EditAbilityFragment extends MCFragment { +public class EditTraitFragment extends MCFragment { private EditMonsterViewModel mEditMonsterViewModel; private EditTraitViewModel mViewModel; - private ViewHolder mHolder; + private EditTraitFragment.ViewHolder mHolder; private Trait mOldValue; + private TraitType mTraitType; @Override public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) { mViewModel = new ViewModelProvider(this).get(EditTraitViewModel.class); if (getArguments() != null) { - EditAbilityFragmentArgs args = EditAbilityFragmentArgs.fromBundle(getArguments()); + EditTraitFragmentArgs args = EditTraitFragmentArgs.fromBundle(getArguments()); mOldValue = new Trait(args.getName(), args.getDescription()); mViewModel.copyFromTrait(mOldValue); + mTraitType = args.getTraitType(); } else { - Logger.logWTF("EditAbilityFragment needs arguments"); + Logger.logWTF("EditTraitFragment needs arguments"); mOldValue = null; } @@ -49,7 +52,7 @@ public class EditAbilityFragment extends MCFragment { NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation); mEditMonsterViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class); View root = inflater.inflate(R.layout.fragment_edit_trait, container, false); - mHolder = new ViewHolder(root); + mHolder = new EditTraitFragment.ViewHolder(root); mHolder.name.setText(mViewModel.getNameAsString()); mHolder.name.addTextChangedListener(new TextChangedListener((TextChangedListener.OnTextChangedCallback) (s, start, before, count) -> mViewModel.setName(s.toString()))); @@ -61,7 +64,7 @@ public class EditAbilityFragment extends MCFragment { @Override public void handleOnBackPressed() { if (mViewModel.hasChanges()) { - mEditMonsterViewModel.replaceAbility(mOldValue, mViewModel.getAbilityValue()); + mEditMonsterViewModel.replaceTrait(mTraitType, mOldValue, mViewModel.getAbilityValue()); } Navigation.findNavController(requireView()).navigateUp(); } diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditAbilitiesFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitListFragment.java similarity index 51% rename from app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditAbilitiesFragment.java rename to app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitListFragment.java index ce0a0d8..299d89c 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditAbilitiesFragment.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitListFragment.java @@ -8,6 +8,7 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.lifecycle.LiveData; import androidx.lifecycle.ViewModelProvider; import androidx.navigation.NavBackStackEntry; import androidx.navigation.NavController; @@ -20,30 +21,45 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.majinnaibu.monstercards.R; +import com.majinnaibu.monstercards.data.enums.TraitType; import com.majinnaibu.monstercards.models.Trait; import com.majinnaibu.monstercards.ui.shared.MCFragment; import com.majinnaibu.monstercards.ui.shared.SwipeToDeleteCallback; import com.majinnaibu.monstercards.utils.Logger; -public class EditAbilitiesFragment extends MCFragment { +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +// TODO: rename to EditTraitsFragment +public class EditTraitListFragment extends MCFragment { private EditMonsterViewModel mViewModel; private ViewHolder mHolder; + private TraitType mTraitType; - private void navigateToEditAbility(Trait trait) { - NavDirections action = EditAbilitiesFragmentDirections.actionEditAbilitiesFragmentToEditAbilityFragment(trait.description, trait.name); - Navigation.findNavController(requireView()).navigate(action); + + @Override + public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) { + if (getArguments() != null) { + EditTraitListFragmentArgs args = EditTraitListFragmentArgs.fromBundle(getArguments()); + mTraitType = args.getTraitType(); + } else { + Logger.logWTF("EditTraitFragment needs arguments"); + } + super.onCreate(savedInstanceState); } @Nullable + @org.jetbrains.annotations.Nullable @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) { NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment); NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation); mViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class); - View root = inflater.inflate(R.layout.fragment_edit_abilities_list, container, false); + View root = inflater.inflate(R.layout.fragment_edit_traits_list, container, false); mHolder = new ViewHolder(root); setupRecyclerView(mHolder.list); - setupAddAbilityButton(mHolder.addAbility); + setupAddButton(mHolder.addTrait); return root; } @@ -52,38 +68,47 @@ public class EditAbilitiesFragment extends MCFragment { LinearLayoutManager layoutManager = new LinearLayoutManager(context); recyclerView.setLayoutManager(layoutManager); - mViewModel.getAbilities().observe(getViewLifecycleOwner(), abilities -> { - EditAbilitiesRecyclerViewAdapter adapter = new EditAbilitiesRecyclerViewAdapter(abilities, ability -> { - if (ability != null) { - navigateToEditAbility(ability); - } else { - Logger.logError("Can't navigate to EditAbilityFragment with a null ability"); - } + LiveData> traitData = mViewModel.getTraits(mTraitType); + if (traitData != null) { + traitData.observe(getViewLifecycleOwner(), traits -> { + EditTraitsRecyclerViewAdapter adapter = new EditTraitsRecyclerViewAdapter(traits, trait -> { + if (trait != null) { + navigateToEditTrait(trait); + } else { + Logger.logError("Can't navigate to EditTraitFragment with a null trait"); + } + }); + recyclerView.setAdapter(adapter); }); - recyclerView.setAdapter(adapter); - }); - + } DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(context, layoutManager.getOrientation()); recyclerView.addItemDecoration(dividerItemDecoration); - ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(context, mViewModel::removeAbility)); + ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(context, position -> mViewModel.removeTrait(mTraitType, position))); itemTouchHelper.attachToRecyclerView(recyclerView); } - private void setupAddAbilityButton(@NonNull FloatingActionButton fab) { + private void setupAddButton(@NonNull FloatingActionButton fab) { fab.setOnClickListener(view -> { - Trait ability = mViewModel.addNewAbility(); - navigateToEditAbility(ability); + Trait newTrait = mViewModel.addNewTrait(mTraitType); + if (newTrait != null) { + navigateToEditTrait(newTrait); + } }); } + protected void navigateToEditTrait(Trait trait) { + NavDirections action = EditTraitListFragmentDirections.actionEditTraitListFragmentToEditTraitFragment(trait.description, trait.name, mTraitType); + Navigation.findNavController(requireView()).navigate(action); + } + private static class ViewHolder { RecyclerView list; - FloatingActionButton addAbility; + FloatingActionButton addTrait; ViewHolder(View root) { list = root.findViewById(R.id.list); - addAbility = root.findViewById(R.id.add_ability); + addTrait = root.findViewById(R.id.add_trait); } } } diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditAbilitiesRecyclerViewAdapter.java b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitsRecyclerViewAdapter.java similarity index 75% rename from app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditAbilitiesRecyclerViewAdapter.java rename to app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitsRecyclerViewAdapter.java index 32f4f44..175fa35 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditAbilitiesRecyclerViewAdapter.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitsRecyclerViewAdapter.java @@ -6,18 +6,18 @@ import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; -import com.majinnaibu.monstercards.databinding.FragmentEditAbilitiesListItemBinding; +import com.majinnaibu.monstercards.databinding.FragmentEditTraitsListItemBinding; import com.majinnaibu.monstercards.models.Trait; import org.jetbrains.annotations.NotNull; import java.util.List; -public class EditAbilitiesRecyclerViewAdapter extends RecyclerView.Adapter { +public class EditTraitsRecyclerViewAdapter extends RecyclerView.Adapter { private final List mValues; private final ItemCallback mOnClick; - public EditAbilitiesRecyclerViewAdapter(List items, ItemCallback onClick) { + public EditTraitsRecyclerViewAdapter(List items, ItemCallback onClick) { mValues = items; mOnClick = onClick; } @@ -25,7 +25,7 @@ public class EditAbilitiesRecyclerViewAdapter extends RecyclerView.Adapter - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_edit_abilities_list_item.xml b/app/src/main/res/layout/fragment_edit_traits_list_item.xml similarity index 96% rename from app/src/main/res/layout/fragment_edit_abilities_list_item.xml rename to app/src/main/res/layout/fragment_edit_traits_list_item.xml index 6e9049a..93d00b2 100644 --- a/app/src/main/res/layout/fragment_edit_abilities_list_item.xml +++ b/app/src/main/res/layout/fragment_edit_traits_list_item.xml @@ -10,4 +10,4 @@ android:layout_height="wrap_content" android:layout_margin="@dimen/text_margin" android:textAppearance="?attr/textAppearanceListItem" /> - \ No newline at end of file + diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index d2f48e8..977670b 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -112,8 +112,8 @@ android:id="@+id/action_editMonsterFragment_to_editLanguagesFragment" app:destination="@id/editLanguagesFragment" /> + android:id="@+id/action_editMonsterFragment_to_editTraitListFragment" + app:destination="@id/editTraitListFragment" /> - - - + android:id="@+id/editTraitFragment" + android:name="com.majinnaibu.monstercards.ui.editmonster.EditTraitFragment" + android:label="EditTraitFragment"> + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3ee197d..bd8f358 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,6 +6,7 @@ Add monster Add Sense Add Skill + Add Trait Edit Actions MonsterCards @@ -88,4 +89,4 @@ Library Search WIS - \ No newline at end of file +