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

View File

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