From f952ee7df987bc019264b99f8ff9283829422f21 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Tue, 12 Dec 2017 02:19:29 +0100 Subject: [PATCH] Abstract the key profile list away from MainActivity --- .../java/me/impy/aegis/KeyProfileAdapter.java | 20 +++++++++++++++++-- .../main/java/me/impy/aegis/MainActivity.java | 16 ++++++--------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/me/impy/aegis/KeyProfileAdapter.java b/app/src/main/java/me/impy/aegis/KeyProfileAdapter.java index d80ddbb5..e5fcf025 100644 --- a/app/src/main/java/me/impy/aegis/KeyProfileAdapter.java +++ b/app/src/main/java/me/impy/aegis/KeyProfileAdapter.java @@ -28,13 +28,29 @@ public class KeyProfileAdapter extends RecyclerView.Adapter keyProfiles, Listener listener) { - _keyProfiles = keyProfiles; + public KeyProfileAdapter(Listener listener) { + _keyProfiles = new ArrayList<>(); _holders = new ArrayList<>(); _uiHandler = new Handler(); _listener = listener; } + public void addKey(KeyProfile profile) { + _keyProfiles.add(profile); + notifyDataSetChanged(); + } + + public void addKeys(List profiles) { + _keyProfiles.addAll(profiles); + notifyDataSetChanged(); + } + + public void removeKey(KeyProfile profile) { + int position = _keyProfiles.indexOf(profile); + _keyProfiles.remove(position); + notifyItemRemoved(position); + } + @Override public void onItemDismiss(int position) { diff --git a/app/src/main/java/me/impy/aegis/MainActivity.java b/app/src/main/java/me/impy/aegis/MainActivity.java index 5870724d..095246f6 100644 --- a/app/src/main/java/me/impy/aegis/MainActivity.java +++ b/app/src/main/java/me/impy/aegis/MainActivity.java @@ -51,7 +51,6 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter private static final int CODE_PREFERENCES = 5; private KeyProfileAdapter _keyProfileAdapter; - private ArrayList _keyProfiles; private DatabaseManager _db; private boolean _nightMode = false; @@ -113,8 +112,7 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter LinearLayoutManager mLayoutManager = new LinearLayoutManager(this); rvKeyProfiles.setLayoutManager(mLayoutManager); - _keyProfiles = new ArrayList<>(); - _keyProfileAdapter = new KeyProfileAdapter(_keyProfiles, this); + _keyProfileAdapter = new KeyProfileAdapter(this); if (_db.isDecrypted()) { loadKeyProfiles(); } @@ -282,8 +280,7 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter return; } - _keyProfiles.add(profile); - _keyProfileAdapter.notifyDataSetChanged(); + _keyProfileAdapter.addKey(profile); } private void onDoIntroResult(int resultCode, Intent data) { @@ -400,9 +397,7 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter Toast.makeText(this, "An error occurred while trying to delete an entry", Toast.LENGTH_SHORT).show(); return; } - int position = _keyProfiles.indexOf(profile); - _keyProfiles.remove(profile); - _keyProfileAdapter.notifyItemRemoved(position); + _keyProfileAdapter.removeKey(profile); }) .setNegativeButton(android.R.string.no, null) .show(); @@ -501,9 +496,10 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter private void loadKeyProfiles() { updateLockIcon(); + List profiles = new ArrayList<>(); try { for (DatabaseEntry entry : _db.getKeys()) { - _keyProfiles.add(new KeyProfile(entry)); + profiles.add(new KeyProfile(entry)); } } catch (Exception e) { e.printStackTrace(); @@ -511,7 +507,7 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter return; } - _keyProfileAdapter.notifyDataSetChanged(); + _keyProfileAdapter.addKeys(profiles); } private void updateLockIcon() {