editProfile(view, profile);
};
private ObservableValue<Boolean> editingProfiles = new ObservableValue<>(false);
- public void addEditingProfilesObserver(Observer o) {
- editingProfiles.addObserver(o);
- }
- public void deleteEditingProfilesObserver(Observer o) {
- editingProfiles.deleteObserver(o);
- }
private RecyclerView recyclerView;
private ItemTouchHelper rearrangeHelper;
public ProfilesRecyclerViewAdapter() {
- Data.profiles.addObserver((o, arg) -> {
- Log.d("profiles", "profile list changed");
- if (arg == null) notifyDataSetChanged();
- else notifyItemChanged((int) arg);
- });
+ Log.d("flow", "ProfilesRecyclerViewAdapter.new()");
ItemTouchHelper.Callback cb = new ItemTouchHelper.Callback() {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView,
@NonNull RecyclerView.ViewHolder viewHolder,
@NonNull RecyclerView.ViewHolder target) {
- Collections.swap(Data.profiles, viewHolder.getAdapterPosition(),
- target.getAdapterPosition());
- MobileLedgerProfile.storeProfilesOrder();
- notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
+ Data.profiles.blockNotifications();
+ try {
+ Collections.swap(Data.profiles, viewHolder.getAdapterPosition(), target.getAdapterPosition());
+ MobileLedgerProfile.storeProfilesOrder();
+ notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
+ }
+ finally {
+ Data.profiles.unblockNotifications();
+ }
return true;
}
@Override
};
rearrangeHelper = new ItemTouchHelper(cb);
}
+ public void addEditingProfilesObserver(Observer o) {
+ editingProfiles.addObserver(o);
+ }
+ public void deleteEditingProfilesObserver(Observer o) {
+ editingProfiles.deleteObserver(o);
+ }
@Override
public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) {
rearrangeHelper.attachToRecyclerView(null);