X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Ftemplates%2FTemplateViewHolder.java;h=aeb1dc13e5d5c889bb4d24d29467747e002493c2;hp=c8c197f44d1983926af295e8893ac543125ed240;hb=fb2d072ef47f806238968a9bc73fc7972d1c6bbc;hpb=92846565ae94144ea1423be61c37e5a7b1a920fa diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateViewHolder.java b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateViewHolder.java index c8c197f4..aeb1dc13 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateViewHolder.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateViewHolder.java @@ -17,46 +17,68 @@ 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