Adapt delete button code to fit with other changes.

This commit is contained in:
leopoldsedev
2020-02-15 19:24:33 +01:00
committed by Jannis Mattheis
parent f49900e0ef
commit 48c2806d12
3 changed files with 12 additions and 8 deletions

View File

@@ -92,7 +92,8 @@ public class ListMessageAdapter extends RecyclerView.Adapter<ListMessageAdapter.
message.message.getDate() != null message.message.getDate() != null
? Utils.dateToRelative(message.message.getDate()) ? Utils.dateToRelative(message.message.getDate())
: "?"); : "?");
holder.delete.setOnClickListener((ignored) -> delete.delete(message.message)); holder.delete.setOnClickListener(
(ignored) -> delete.delete(holder.getAdapterPosition(), message.message, false));
} }
@Override @Override
@@ -129,6 +130,6 @@ public class ListMessageAdapter extends RecyclerView.Adapter<ListMessageAdapter.
} }
public interface Delete { public interface Delete {
void delete(Message message); void delete(int position, Message message, boolean listAnimation);
} }
} }

View File

@@ -153,7 +153,8 @@ public class MessagesActivity extends AppCompatActivity
new DividerItemDecoration( new DividerItemDecoration(
messagesView.getContext(), layoutManager.getOrientation()); messagesView.getContext(), layoutManager.getOrientation());
ListMessageAdapter adapter = ListMessageAdapter adapter =
new ListMessageAdapter(this, settings, picasso, emptyList(), this::delete); new ListMessageAdapter(
this, settings, picasso, emptyList(), this::scheduleDeletion);
messagesView.addItemDecoration(dividerItemDecoration); messagesView.addItemDecoration(dividerItemDecoration);
messagesView.setHasFixedSize(true); messagesView.setHasFixedSize(true);
@@ -364,12 +365,14 @@ public class MessagesActivity extends AppCompatActivity
picasso.shutdown(); picasso.shutdown();
} }
private void scheduleDeletion(int position, Message message) { private void scheduleDeletion(int position, Message message, boolean listAnimation) {
ListMessageAdapter adapter = (ListMessageAdapter) messagesView.getAdapter(); ListMessageAdapter adapter = (ListMessageAdapter) messagesView.getAdapter();
messages.deleteLocal(message); messages.deleteLocal(message);
adapter.setItems(messages.get(appId)); adapter.setItems(messages.get(appId));
adapter.notifyItemRemoved(position);
if (listAnimation) adapter.notifyItemRemoved(position);
else adapter.notifyDataSetChanged();
showDeletionSnackbar(); showDeletionSnackbar();
} }
@@ -447,7 +450,7 @@ public class MessagesActivity extends AppCompatActivity
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition(); int position = viewHolder.getAdapterPosition();
MessageWithImage message = adapter.getItems().get(position); MessageWithImage message = adapter.getItems().get(position);
scheduleDeletion(position, message.message); scheduleDeletion(position, message.message, true);
} }
@Override @Override

View File

@@ -86,13 +86,13 @@ class MessageStateHolder {
if (allMessages.loaded) { if (allMessages.loaded) {
int allPosition = allMessages.messages.indexOf(message); int allPosition = allMessages.messages.indexOf(message);
allMessages.messages.remove(allPosition); if (allPosition != -1) allMessages.messages.remove(allPosition);
pendingDeletedAllPosition = allPosition; pendingDeletedAllPosition = allPosition;
} }
if (appMessages.loaded) { if (appMessages.loaded) {
int appPosition = appMessages.messages.indexOf(message); int appPosition = appMessages.messages.indexOf(message);
appMessages.messages.remove(appPosition); if (appPosition != -1) appMessages.messages.remove(appPosition);
pendingDeletedAppPosition = appPosition; pendingDeletedAppPosition = appPosition;
} }