]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateViewHolder.java
add divider before fallback templates
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplateViewHolder.java
index c8c197f44d1983926af295e8893ac543125ed240..aeb1dc13e5d5c889bb4d24d29467747e002493c2 100644 (file)
 
 package net.ktnx.mobileledger.ui.templates;
 
+import android.view.View;
+
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.AlertDialog;
 import androidx.recyclerview.widget.RecyclerView;
 
 import net.ktnx.mobileledger.R;
 import net.ktnx.mobileledger.databinding.TemplateListTemplateItemBinding;
+import net.ktnx.mobileledger.databinding.TemplatesFallbackDividerBinding;
 import net.ktnx.mobileledger.db.TemplateHeader;
 
-class TemplateViewHolder extends RecyclerView.ViewHolder {
-    final TemplateListTemplateItemBinding b;
-    public TemplateViewHolder(@NonNull TemplateListTemplateItemBinding binding) {
-        super(binding.getRoot());
-        b = binding;
+abstract class BaseTemplateViewHolder extends RecyclerView.ViewHolder {
+    public BaseTemplateViewHolder(@NonNull View itemView) {
+        super(itemView);
+    }
+    abstract void bindToItem(TemplatesRecyclerViewAdapter.BaseTemplateItem item);
+    static class TemplateDividerViewHolder extends BaseTemplateViewHolder {
+        public TemplateDividerViewHolder(@NonNull TemplatesFallbackDividerBinding binding) {
+            super(binding.getRoot());
+        }
+        @Override
+        void bindToItem(TemplatesRecyclerViewAdapter.BaseTemplateItem item) {
+            // nothing
+        }
     }
-    public void bindToItem(TemplateHeader item) {
-        b.templateName.setText(item.getName());
-        b.templateName.setOnClickListener(
-                v -> ((TemplatesActivity) v.getContext()).onEditTemplate(item.getId()));
-        b.templateName.setOnLongClickListener((v) -> {
-            TemplatesActivity activity = (TemplatesActivity) v.getContext();
-            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
-            final String templateName = item.getName();
-            builder.setTitle(templateName);
-            builder.setItems(R.array.templates_ctx_menu, (dialog, which) -> {
-                if (which == 0) { // edit
-                    activity.onEditTemplate(item.getId());
-                }
-                else if (which == 1) { // duplicate
-                    activity.onDuplicateTemplate(item.getId());
-                }
-                else if (which == 2) { // delete
-                    activity.onDeleteTemplate(item.getId());
-                }
-                else {
-                    throw new RuntimeException(String.format("Unknown menu item id (%d)", which));
-                }
-                dialog.dismiss();
+
+    static class TemplateViewHolder extends BaseTemplateViewHolder {
+        final TemplateListTemplateItemBinding b;
+        public TemplateViewHolder(@NonNull TemplateListTemplateItemBinding binding) {
+            super(binding.getRoot());
+            b = binding;
+        }
+        @Override
+        public void bindToItem(TemplatesRecyclerViewAdapter.BaseTemplateItem baseItem) {
+            TemplateHeader item = ((TemplatesRecyclerViewAdapter.TemplateItem) baseItem).template;
+            b.templateName.setText(item.getName());
+            b.templateName.setOnClickListener(
+                    v -> ((TemplatesActivity) v.getContext()).onEditTemplate(item.getId()));
+            b.templateName.setOnLongClickListener((v) -> {
+                TemplatesActivity activity = (TemplatesActivity) v.getContext();
+                AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+                final String templateName = item.getName();
+                builder.setTitle(templateName);
+                builder.setItems(R.array.templates_ctx_menu, (dialog, which) -> {
+                    if (which == 0) { // edit
+                        activity.onEditTemplate(item.getId());
+                    }
+                    else if (which == 1) { // duplicate
+                        activity.onDuplicateTemplate(item.getId());
+                    }
+                    else if (which == 2) { // delete
+                        activity.onDeleteTemplate(item.getId());
+                    }
+                    else {
+                        throw new RuntimeException(
+                                String.format("Unknown menu item id (%d)", which));
+                    }
+                    dialog.dismiss();
+                });
+                builder.show();
+                return true;
             });
-            builder.show();
-            return true;
-        });
+        }
     }
-}
+}
\ No newline at end of file