mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-04-24 15:56:07 +00:00
Fix a crash that would occur while moving an entry during a refresh
This commit is contained in:
parent
476643a81c
commit
7129a16a44
4 changed files with 25 additions and 8 deletions
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
|
@ -24,7 +24,7 @@
|
||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|
|
@ -327,7 +327,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
||||||
updateLockIcon();
|
updateLockIcon();
|
||||||
|
|
||||||
// refresh all codes to prevent showing old ones
|
// refresh all codes to prevent showing old ones
|
||||||
_entryListView.refresh();
|
_entryListView.refresh(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private BottomSheetDialog createBottomSheet(final DatabaseEntry entry) {
|
private BottomSheetDialog createBottomSheet(final DatabaseEntry entry) {
|
||||||
|
|
|
@ -23,8 +23,12 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
|
||||||
private static Listener _listener;
|
private static Listener _listener;
|
||||||
private boolean _showIssuer;
|
private boolean _showIssuer;
|
||||||
|
|
||||||
|
// keeps track of the viewholders that are currently bound
|
||||||
|
private List<EntryHolder> _holders;
|
||||||
|
|
||||||
public EntryAdapter(Listener listener) {
|
public EntryAdapter(Listener listener) {
|
||||||
_entries = new ArrayList<>();
|
_entries = new ArrayList<>();
|
||||||
|
_holders = new ArrayList<>();
|
||||||
_listener = listener;
|
_listener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,6 +80,16 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
|
||||||
throw new AssertionError("no entry found with the same id");
|
throw new AssertionError("no entry found with the same id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void refresh(boolean hard) {
|
||||||
|
if (hard) {
|
||||||
|
notifyDataSetChanged();
|
||||||
|
} else {
|
||||||
|
for (EntryHolder holder : _holders) {
|
||||||
|
holder.refreshCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemDismiss(int position) {
|
public void onItemDismiss(int position) {
|
||||||
|
|
||||||
|
@ -105,7 +119,7 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
|
||||||
@Override
|
@Override
|
||||||
public void onViewRecycled(EntryHolder holder) {
|
public void onViewRecycled(EntryHolder holder) {
|
||||||
holder.stopRefreshLoop();
|
holder.stopRefreshLoop();
|
||||||
super.onViewRecycled(holder);
|
_holders.remove(holder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -149,6 +163,8 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
|
||||||
holder.refreshCode();
|
holder.refreshCode();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
_holders.add(holder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getUniformPeriod() {
|
public int getUniformPeriod() {
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
||||||
_refresher = new UiRefresher(new UiRefresher.Listener() {
|
_refresher = new UiRefresher(new UiRefresher.Listener() {
|
||||||
@Override
|
@Override
|
||||||
public void onRefresh() {
|
public void onRefresh() {
|
||||||
refresh();
|
refresh(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -65,11 +65,11 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refresh() {
|
public void refresh(boolean hard) {
|
||||||
if (_showProgress) {
|
if (_showProgress) {
|
||||||
_progressBar.refresh();
|
_progressBar.refresh();
|
||||||
}
|
}
|
||||||
_adapter.notifyDataSetChanged();
|
_adapter.refresh(hard);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkPeriodUniformity() {
|
private void checkPeriodUniformity() {
|
||||||
|
@ -90,11 +90,12 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startRefreshLoop() {
|
private void startRefreshLoop() {
|
||||||
|
refresh(true);
|
||||||
_refresher.start();
|
_refresher.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void stopRefreshLoop() {
|
private void stopRefreshLoop() {
|
||||||
refresh();
|
refresh(true);
|
||||||
_refresher.stop();
|
_refresher.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +130,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
||||||
|
|
||||||
public void setShowIssuer(boolean showIssuer) {
|
public void setShowIssuer(boolean showIssuer) {
|
||||||
_adapter.setShowIssuer(showIssuer);
|
_adapter.setShowIssuer(showIssuer);
|
||||||
_adapter.notifyDataSetChanged();
|
_adapter.refresh(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addEntry(DatabaseEntry entry) {
|
public void addEntry(DatabaseEntry entry) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue