diff --git a/CHANGELOG.md b/CHANGELOG.md index a06ed9b2e..8dea8ae7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Changes: - Improve Stocard importer - Fix importing Catima export with multiline note - Scale card title in acceptable range +- Animation improvements ## v2.2.0 (2021-08-02) diff --git a/app/src/main/java/protect/card_locker/GroupCursorAdapter.java b/app/src/main/java/protect/card_locker/GroupCursorAdapter.java index fe8e90798..886c73879 100644 --- a/app/src/main/java/protect/card_locker/GroupCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/GroupCursorAdapter.java @@ -15,18 +15,26 @@ import protect.card_locker.preferences.Settings; class GroupCursorAdapter extends BaseCursorAdapter { Settings mSettings; - private final Cursor mCursor; + private Cursor mCursor; private final Context mContext; private final GroupCursorAdapter.GroupAdapterListener mListener; DBHelper mDb; public GroupCursorAdapter(Context inputContext, Cursor inputCursor, GroupCursorAdapter.GroupAdapterListener inputListener) { super(inputCursor); + setHasStableIds(true); mSettings = new Settings(inputContext); - mCursor = inputCursor; mContext = inputContext; mListener = inputListener; mDb = new DBHelper(inputContext); + + swapCursor(mCursor); + } + + @Override + public void swapCursor(Cursor inputCursor) { + super.swapCursor(inputCursor); + mCursor = inputCursor; } @NonNull diff --git a/app/src/main/java/protect/card_locker/ManageGroupsActivity.java b/app/src/main/java/protect/card_locker/ManageGroupsActivity.java index 8649b5866..7220897f7 100644 --- a/app/src/main/java/protect/card_locker/ManageGroupsActivity.java +++ b/app/src/main/java/protect/card_locker/ManageGroupsActivity.java @@ -28,6 +28,8 @@ public class ManageGroupsActivity extends AppCompatActivity implements GroupCurs private static final String TAG = "Catima"; private final DBHelper mDb = new DBHelper(this); + private TextView mHelpText; + private RecyclerView mGroupList; GroupCursorAdapter mAdapter; @Override @@ -42,19 +44,28 @@ public class ManageGroupsActivity extends AppCompatActivity implements GroupCurs { actionBar.setDisplayHomeAsUpEnabled(true); } - - updateGroupList(); } @Override protected void onResume() { super.onResume(); - updateGroupList(); - FloatingActionButton addButton = findViewById(R.id.fabAdd); addButton.setOnClickListener(v -> createGroup()); addButton.bringToFront(); + + mGroupList = findViewById(R.id.list); + mHelpText = findViewById(R.id.helpText); + + // Init group list + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); + mGroupList.setLayoutManager(mLayoutManager); + mGroupList.setItemAnimator(new DefaultItemAnimator()); + + mAdapter = new GroupCursorAdapter(this, null, this); + mGroupList.setAdapter(mAdapter); + + updateGroupList(); } @Override @@ -64,29 +75,17 @@ public class ManageGroupsActivity extends AppCompatActivity implements GroupCurs private void updateGroupList() { - final RecyclerView groupList = findViewById(R.id.list); - final TextView helpText = findViewById(R.id.helpText); + mAdapter.swapCursor(mDb.getGroupCursor()); if (mDb.getGroupCount() == 0) { - groupList.setVisibility(View.GONE); - helpText.setVisibility(View.VISIBLE); + mGroupList.setVisibility(View.GONE); + mHelpText.setVisibility(View.VISIBLE); return; } - groupList.setVisibility(View.VISIBLE); - helpText.setVisibility(View.GONE); - - Cursor groupCursor = mDb.getGroupCursor(); - - RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); - groupList.setLayoutManager(mLayoutManager); - groupList.setItemAnimator(new DefaultItemAnimator()); - - mAdapter = new GroupCursorAdapter(this, groupCursor, this); - groupList.setAdapter(mAdapter); - - registerForContextMenu(groupList); + mGroupList.setVisibility(View.VISIBLE); + mHelpText.setVisibility(View.GONE); } private void invalidateHomescreenActiveTab() @@ -160,7 +159,7 @@ public class ManageGroupsActivity extends AppCompatActivity implements GroupCurs mDb.reorderGroups(groups); // Update UI - mAdapter.notifyItemMoved(currentIndex, newIndex); + updateGroupList(); // Ordering may have changed, so invalidate invalidateHomescreenActiveTab();