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