Fix flashing in ManageGroupsActivity

This commit is contained in:
Sylvia van Os
2021-08-07 13:16:21 +02:00
parent 57bedd0300
commit cd6685b974
3 changed files with 32 additions and 24 deletions

View File

@@ -15,18 +15,26 @@ import protect.card_locker.preferences.Settings;
class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.GroupListItemViewHolder>
{
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

View File

@@ -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();