Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2020-05-05 15:26:54 +0300
committerStefan Niedermann <info@niedermann.it>2020-05-05 15:26:54 +0300
commitf0b0fe24a1cb68f0019d3400ec6a981165d65f36 (patch)
treeed44c868bbff0ac8b307802bc565a1657d2a5a48 /app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDueTypeAdapter.java
parenteb022fc23cb6ce4935dcd9b60b3eccca727422ce (diff)
Flatten due type filter list
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDueTypeAdapter.java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDueTypeAdapter.java84
1 files changed, 84 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDueTypeAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDueTypeAdapter.java
new file mode 100644
index 000000000..dab5bb9f7
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDueTypeAdapter.java
@@ -0,0 +1,84 @@
+package it.niedermann.nextcloud.deck.ui.filter;
+
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.Arrays;
+
+import it.niedermann.nextcloud.deck.databinding.ItemFilterDuetypeBinding;
+import it.niedermann.nextcloud.deck.model.enums.EDueType;
+
+public class FilterDueTypeAdapter extends RecyclerView.Adapter<FilterDueTypeAdapter.DueTypeViewHolder> {
+ @NonNull
+ private final EDueType[] dueTypes = EDueType.values();
+ private int selectedDueTypePosition;
+ @Nullable
+ private final SelectionListener<EDueType> selectionListener;
+
+ @SuppressWarnings("WeakerAccess")
+ public FilterDueTypeAdapter(@NonNull EDueType selectedDueType, @Nullable SelectionListener<EDueType> selectionListener) {
+ super();
+ this.selectedDueTypePosition = Arrays.binarySearch(dueTypes, selectedDueType);
+ this.selectionListener = selectionListener;
+ setHasStableIds(true);
+ notifyDataSetChanged();
+ }
+
+ @NonNull
+ @Override
+ public DueTypeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new DueTypeViewHolder(ItemFilterDuetypeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull DueTypeViewHolder viewHolder, int position) {
+ viewHolder.bind(dueTypes[position]);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public int getItemCount() {
+ return dueTypes.length;
+ }
+
+ class DueTypeViewHolder extends RecyclerView.ViewHolder {
+ private ItemFilterDuetypeBinding binding;
+
+ DueTypeViewHolder(@NonNull ItemFilterDuetypeBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ void bind(final EDueType dueType) {
+ binding.dueType.setText(dueType.toString(binding.dueType.getContext()));
+ itemView.setSelected(dueTypes[selectedDueTypePosition].equals(dueType));
+
+ itemView.setOnClickListener(view -> {
+ final int oldSelection = selectedDueTypePosition;
+ if (dueTypes[selectedDueTypePosition].equals(dueType)) {
+ selectedDueTypePosition = Arrays.binarySearch(dueTypes, EDueType.NO_FILTER);
+ itemView.setSelected(false);
+ if (selectionListener != null) {
+ selectionListener.onItemSelected(EDueType.NO_FILTER);
+ }
+ notifyItemChanged(selectedDueTypePosition);
+ } else {
+ selectedDueTypePosition = Arrays.binarySearch(dueTypes, dueType);
+ itemView.setSelected(true);
+ if (selectionListener != null) {
+ selectionListener.onItemSelected(dueType);
+ }
+ }
+ notifyItemChanged(oldSelection);
+ });
+ }
+ }
+}