From 0f12d02990b563e704a5e554813bb1f6cb2594d9 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sat, 16 Jul 2016 10:12:06 -0400 Subject: [PATCH] Use same cache for every SQLHabitList --- .../isoron/uhabits/models/sqlite/SQLiteHabitList.java | 6 +++--- .../ui/habits/list/model/HabitCardListCache.java | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java index 1648e22c2..b01b5aef8 100644 --- a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java +++ b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java @@ -37,14 +37,14 @@ public class SQLiteHabitList extends HabitList { private static SQLiteHabitList instance; - private HashMap cache; + private static HashMap cache; private final SQLiteUtils sqlite; protected SQLiteHabitList() { super(); - cache = new HashMap<>(); + if(cache == null) cache = new HashMap<>(); sqlite = new SQLiteUtils<>(HabitRecord.class); } @@ -52,7 +52,7 @@ public class SQLiteHabitList extends HabitList @NonNull org.isoron.uhabits.models.HabitMatcher filter) { super(filter); - cache = new HashMap<>(); + if(cache == null) cache = new HashMap<>(); sqlite = new SQLiteUtils<>(HabitRecord.class); } diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/list/model/HabitCardListCache.java b/app/src/main/java/org/isoron/uhabits/ui/habits/list/model/HabitCardListCache.java index 119c089b3..935a83b62 100644 --- a/app/src/main/java/org/isoron/uhabits/ui/habits/list/model/HabitCardListCache.java +++ b/app/src/main/java/org/isoron/uhabits/ui/habits/list/model/HabitCardListCache.java @@ -346,7 +346,7 @@ public class HabitCardListCache implements CommandRunner.Listener if (listener != null) listener.onItemInserted(position); } - private void performMove(Habit habit, int toPosition, int fromPosition) + private void performMove(Habit habit, int fromPosition, int toPosition) { data.habits.remove(fromPosition); data.habits.add(toPosition, habit); @@ -358,7 +358,8 @@ public class HabitCardListCache implements CommandRunner.Listener { data.scores.put(id, newData.scores.get(id)); data.checkmarks.put(id, newData.checkmarks.get(id)); - listener.onItemChanged(position); + if(listener != null) + listener.onItemChanged(position); } private void processPosition(int currentPosition) @@ -366,13 +367,12 @@ public class HabitCardListCache implements CommandRunner.Listener Habit habit = newData.habits.get(currentPosition); Long id = habit.getId(); - Habit prevHabit = data.id_to_habit.get(id); - int prevPosition = data.habits.indexOf(prevHabit); + int prevPosition = data.habits.indexOf(habit); if (prevPosition < 0) performInsert(habit, currentPosition); else if (prevPosition == currentPosition) performUpdate(id, currentPosition); - else performMove(habit, currentPosition, prevPosition); + else performMove(habit, prevPosition, currentPosition); } private void processRemovedHabits()