From 942dcdcd501048d2e8c80132039df1a2d054b237 Mon Sep 17 00:00:00 2001 From: Sanjay Sargam Date: Sat, 16 Dec 2023 23:42:55 +0530 Subject: [PATCH] delete history individually --- .../SearchPreferenceAdapter.java | 7 +++++ .../SearchPreferenceFragment.java | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/lib/src/main/java/com/bytehamster/lib/preferencesearch/SearchPreferenceAdapter.java b/lib/src/main/java/com/bytehamster/lib/preferencesearch/SearchPreferenceAdapter.java index c4dba1a4..bebe3b39 100644 --- a/lib/src/main/java/com/bytehamster/lib/preferencesearch/SearchPreferenceAdapter.java +++ b/lib/src/main/java/com/bytehamster/lib/preferencesearch/SearchPreferenceAdapter.java @@ -70,6 +70,12 @@ public void onBindViewHolder(@NonNull final ViewHolder h, final int position) { onItemClickListener.onItemClicked(listItem, h.getAdapterPosition()); } }); + h.root.setOnLongClickListener(v -> { + if (onItemClickListener != null) { + onItemClickListener.onItemDeleteClicked(h.getAdapterPosition()); + } + return false; + }); } void setContent(List items) { @@ -97,6 +103,7 @@ void setOnItemClickListener(SearchClickListener onItemClickListener) { interface SearchClickListener { void onItemClicked(ListItem item, int position); + void onItemDeleteClicked(int position); } static class ViewHolder extends RecyclerView.ViewHolder { diff --git a/lib/src/main/java/com/bytehamster/lib/preferencesearch/SearchPreferenceFragment.java b/lib/src/main/java/com/bytehamster/lib/preferencesearch/SearchPreferenceFragment.java index 75428d57..fe65b73a 100644 --- a/lib/src/main/java/com/bytehamster/lib/preferencesearch/SearchPreferenceFragment.java +++ b/lib/src/main/java/com/bytehamster/lib/preferencesearch/SearchPreferenceFragment.java @@ -15,6 +15,7 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.cardview.widget.CardView; import androidx.fragment.app.Fragment; @@ -267,6 +268,31 @@ public void onItemClicked(ListItem item, int position) { } } + @Override + public void onItemDeleteClicked(int position) { + if (searchConfiguration.isHistoryEnabled()) { + showDeleteConfirmationDialog(position); + } + } + + private void showDeleteConfirmationDialog(final int position) { + AlertDialog.Builder builder = new AlertDialog.Builder(requireContext()); + builder.setMessage("Delete this search history ?"); + builder.setPositiveButton("Delete", (dialog, which) -> deleteHistoryItem(position)); + builder.setNegativeButton("Cancel", (dialog, which) -> { + }); + AlertDialog alertDialog = builder.create(); + alertDialog.show(); + } + + private void deleteHistoryItem(int position) { + if (position >= 0 && position < history.size()) { + history.remove(position); + saveHistory(); + updateSearchResults(viewHolder.searchView.getText().toString()); + } + } + private TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {