getValue() {
+ return mValue;
+ }
+
+ public void setValue(String value) {
+ mValue.setValue(value);
+ }
+
+ public String getValueAsString() {
+ return mValue.getValue();
+ }
+
+ public void resetValue(String value) {
+ makeClean();
+ mValue.resetValue(value);
+ }
+}
diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/placeholder/PlaceholderContent.java b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/placeholder/PlaceholderContent.java
deleted file mode 100644
index d6519c6..0000000
--- a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/placeholder/PlaceholderContent.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.majinnaibu.monstercards.ui.editmonster.placeholder;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Helper class for providing sample content for user interfaces created by
- * Android template wizards.
- *
- * TODO: Replace all uses of this class before publishing your app.
- */
-public class PlaceholderContent {
-
- /**
- * An array of sample (placeholder) items.
- */
- public static final List ITEMS = new ArrayList();
-
- /**
- * A map of sample (placeholder) items, by ID.
- */
- public static final Map ITEM_MAP = new HashMap();
-
- private static final int COUNT = 25;
-
- static {
- // Add some sample items.
- for (int i = 1; i <= COUNT; i++) {
- addItem(createPlaceholderItem(i));
- }
- }
-
- private static void addItem(PlaceholderItem item) {
- ITEMS.add(item);
- ITEM_MAP.put(item.id, item);
- }
-
- private static PlaceholderItem createPlaceholderItem(int position) {
- return new PlaceholderItem(String.valueOf(position), "Item " + position, makeDetails(position));
- }
-
- private static String makeDetails(int position) {
- StringBuilder builder = new StringBuilder();
- builder.append("Details about Item: ").append(position);
- for (int i = 0; i < position; i++) {
- builder.append("\nMore details information here.");
- }
- return builder.toString();
- }
-
- /**
- * A placeholder item representing a piece of content.
- */
- public static class PlaceholderItem {
- public final String id;
- public final String content;
- public final String details;
-
- public PlaceholderItem(String id, String content, String details) {
- this.id = id;
- this.content = content;
- this.details = details;
- }
-
- @Override
- public String toString() {
- return content;
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryFragment.java
index 373950e..b1881b6 100644
--- a/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryFragment.java
+++ b/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryFragment.java
@@ -19,7 +19,7 @@ import com.google.android.material.snackbar.Snackbar;
import com.majinnaibu.monstercards.R;
import com.majinnaibu.monstercards.data.MonsterRepository;
import com.majinnaibu.monstercards.models.Monster;
-import com.majinnaibu.monstercards.ui.MCFragment;
+import com.majinnaibu.monstercards.ui.shared.MCFragment;
import com.majinnaibu.monstercards.ui.shared.SwipeToDeleteCallback;
import com.majinnaibu.monstercards.utils.Logger;
diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterDetailFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterDetailFragment.java
index 10f4ff7..cf0031d 100644
--- a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterDetailFragment.java
+++ b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterDetailFragment.java
@@ -26,7 +26,7 @@ import com.majinnaibu.monstercards.data.MonsterRepository;
import com.majinnaibu.monstercards.helpers.CommonMarkHelper;
import com.majinnaibu.monstercards.helpers.StringHelper;
import com.majinnaibu.monstercards.models.Monster;
-import com.majinnaibu.monstercards.ui.MCFragment;
+import com.majinnaibu.monstercards.ui.shared.MCFragment;
import com.majinnaibu.monstercards.utils.Logger;
import java.util.UUID;
@@ -241,10 +241,15 @@ public class MonsterDetailFragment extends MCFragment {
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.menu_action_edit_monster) {
- NavDirections action = MonsterDetailFragmentDirections.actionNavigationMonsterToEditMonsterFragment(monsterDetailViewModel.getId().getValue().toString());
- View view = getView();
- assert view != null;
- Navigation.findNavController(view).navigate(action);
+ UUID monsterId = monsterDetailViewModel.getId().getValue();
+ if (monsterId != null) {
+ NavDirections action = MonsterDetailFragmentDirections.actionNavigationMonsterToEditMonsterFragment(monsterId.toString());
+ View view = getView();
+ assert view != null;
+ Navigation.findNavController(view).navigate(action);
+ } else {
+ Logger.logWTF("monsterId cannot be null.");
+ }
return true;
}
return super.onOptionsItemSelected(item);
diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchFragment.java
index ff62b72..12ab602 100644
--- a/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchFragment.java
+++ b/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchFragment.java
@@ -14,10 +14,10 @@ import androidx.recyclerview.widget.RecyclerView;
import com.majinnaibu.monstercards.R;
import com.majinnaibu.monstercards.data.MonsterRepository;
-import com.majinnaibu.monstercards.ui.MCFragment;
+import com.majinnaibu.monstercards.ui.shared.MCFragment;
public class SearchFragment extends MCFragment {
-
+
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_search, container, false);
diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchResultsRecyclerViewAdapter.java b/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchResultsRecyclerViewAdapter.java
index c437486..c9f62e2 100644
--- a/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchResultsRecyclerViewAdapter.java
+++ b/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchResultsRecyclerViewAdapter.java
@@ -13,6 +13,8 @@ import com.majinnaibu.monstercards.data.MonsterRepository;
import com.majinnaibu.monstercards.models.Monster;
import com.majinnaibu.monstercards.utils.Logger;
+import org.jetbrains.annotations.NotNull;
+
import java.util.ArrayList;
import java.util.List;
@@ -20,16 +22,11 @@ import io.reactivex.rxjava3.core.Flowable;
import io.reactivex.rxjava3.disposables.Disposable;
public class SearchResultsRecyclerViewAdapter extends RecyclerView.Adapter {
- public interface ItemCallback {
- void onItem(Monster monster);
- }
-
private final MonsterRepository mRepository;
+ private final ItemCallback mOnClickHandler;
private String mSearchText;
private List mValues;
private Disposable mSubscriptionHandler;
- private final ItemCallback mOnClickHandler;
-
public SearchResultsRecyclerViewAdapter(MonsterRepository repository,
ItemCallback onClick) {
mRepository = repository;
@@ -54,6 +51,7 @@ public class SearchResultsRecyclerViewAdapter extends RecyclerView.Adapter Logger.logError("Error performing search", throwable));
}
+ @NotNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
@@ -79,7 +77,11 @@ public class SearchResultsRecyclerViewAdapter extends RecyclerView.Adapter mHasChanges;
+
+ public ChangeTrackedViewModel() {
+ mHasChanges = new MutableLiveData<>(false);
+ }
+
+ public boolean hasChanges() {
+ Boolean value = mHasChanges.getValue();
+ return value != null && value;
+ }
+
+ protected void makeDirty() {
+ mHasChanges.setValue(true);
+ }
+
+ protected void makeClean() {
+ mHasChanges.setValue(false);
+ }
+}
diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/MCFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/shared/MCFragment.java
similarity index 89%
rename from app/src/main/java/com/majinnaibu/monstercards/ui/MCFragment.java
rename to app/src/main/java/com/majinnaibu/monstercards/ui/shared/MCFragment.java
index 1b5d2d9..45c3ec7 100644
--- a/app/src/main/java/com/majinnaibu/monstercards/ui/MCFragment.java
+++ b/app/src/main/java/com/majinnaibu/monstercards/ui/shared/MCFragment.java
@@ -1,4 +1,4 @@
-package com.majinnaibu.monstercards.ui;
+package com.majinnaibu.monstercards.ui.shared;
import android.app.Activity;
@@ -11,7 +11,7 @@ import com.majinnaibu.monstercards.data.MonsterRepository;
public class MCFragment extends Fragment {
public MonsterCardsApplication getApplication() {
- return (MonsterCardsApplication) this.getActivity().getApplication();
+ return (MonsterCardsApplication) requireActivity().getApplication();
}
protected MonsterRepository getMonsterRepository() {