From 25340cb7fd54c5b84dbff3be1b4f4e1c87e956ca Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Mon, 30 Aug 2021 11:06:40 -0700 Subject: [PATCH] Adds generic ItemCallback interface. --- .../DashboardRecyclerViewAdapter.java | 11 ++--- .../EditLanguagesRecyclerViewAdapter.java | 41 +++++++++---------- .../EditSkillsRecyclerViewAdapter.java | 25 +++++++---- .../EditStringsRecyclerViewAdapter.java | 11 ++--- .../EditTraitsRecyclerViewAdapter.java | 11 ++--- .../library/LibraryRecyclerViewAdapter.java | 11 ++--- .../SearchResultsRecyclerViewAdapter.java | 9 ++-- .../monstercards/utils/ItemCallback.java | 5 +++ 8 files changed, 60 insertions(+), 64 deletions(-) create mode 100644 Android/app/src/main/java/com/majinnaibu/monstercards/utils/ItemCallback.java diff --git a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardRecyclerViewAdapter.java b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardRecyclerViewAdapter.java index b1ab732..a76cf69 100644 --- a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardRecyclerViewAdapter.java +++ b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardRecyclerViewAdapter.java @@ -20,6 +20,7 @@ import com.majinnaibu.monstercards.databinding.CardMonsterBinding; import com.majinnaibu.monstercards.helpers.CommonMarkHelper; import com.majinnaibu.monstercards.models.Monster; import com.majinnaibu.monstercards.models.Trait; +import com.majinnaibu.monstercards.utils.ItemCallback; import com.majinnaibu.monstercards.utils.Logger; import java.util.Locale; @@ -36,9 +37,9 @@ public class DashboardRecyclerViewAdapter extends ListAdapter mOnClick; - protected DashboardRecyclerViewAdapter(ItemCallback onClick) { + protected DashboardRecyclerViewAdapter(ItemCallback onClick) { super(DIFF_CALLBACK); mOnClick = onClick; } @@ -119,15 +120,11 @@ public class DashboardRecyclerViewAdapter extends ListAdapter { if (mOnClick != null) { - mOnClick.onItemCallback(holder.monster); + mOnClick.onItem(holder.monster); } }); } - public interface ItemCallback { - void onItemCallback(Monster monster); - } - public static class ViewHolder extends RecyclerView.ViewHolder { public final TextView name; public final TextView meta; diff --git a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditLanguagesRecyclerViewAdapter.java b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditLanguagesRecyclerViewAdapter.java index 8a98b14..ec15691 100644 --- a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditLanguagesRecyclerViewAdapter.java +++ b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditLanguagesRecyclerViewAdapter.java @@ -6,20 +6,21 @@ import android.view.ViewGroup; import android.widget.EditText; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.majinnaibu.monstercards.databinding.FragmentEditLanguagesListHeaderBinding; import com.majinnaibu.monstercards.databinding.FragmentEditLanguagesListItemBinding; import com.majinnaibu.monstercards.models.Language; import com.majinnaibu.monstercards.ui.components.Stepper; - -import org.jetbrains.annotations.NotNull; +import com.majinnaibu.monstercards.utils.ItemCallback; import java.util.List; +import java.util.Locale; public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter { private final List mValues; - private final ItemCallback mOnClick; + private final ItemCallback mOnClick; private final int mTelepathyRange; private final String mUnderstandsBut; private final Stepper.OnValueChangeListener mOnTelepathyRangeChanged; @@ -29,18 +30,18 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter items, ItemCallback onClick, int telepathyRange, Stepper.OnValueChangeListener telepathyRangeChangedListener, String undderstandsBut, TextWatcher understandsButChangedListener) { + public EditLanguagesRecyclerViewAdapter(List items, ItemCallback onClick, int telepathyRange, Stepper.OnValueChangeListener telepathyRangeChangedListener, String understandsBut, TextWatcher understandsButChangedListener) { mValues = items; mOnClick = onClick; mTelepathyRange = telepathyRange; mOnTelepathyRangeChanged = telepathyRangeChangedListener; - mUnderstandsBut = undderstandsBut; + mUnderstandsBut = understandsBut; mOnUnderstandsButChanged = understandsButChangedListener; } - @NotNull + @NonNull @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NotNull ViewGroup parent, int viewType) { + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType == HEADER_VIEW_TYPE) { return new HeaderViewHolder(FragmentEditLanguagesListHeaderBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); } @@ -48,21 +49,21 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter String.format(DISTANCE_IN_FEET_FORMAT, value)); + headerViewHolder.telepathy.setOnFormatValueCallback(value -> String.format(Locale.getDefault(), DISTANCE_IN_FEET_FORMAT, value)); headerViewHolder.telepathy.setValue(mTelepathyRange); headerViewHolder.telepathy.setOnValueChangeListener(mOnTelepathyRangeChanged); headerViewHolder.understandsBut.setText(mUnderstandsBut); headerViewHolder.understandsBut.addTextChangedListener(mOnUnderstandsButChanged); - } else if(holder instanceof ItemViewHolder) { - ItemViewHolder itemViewHolder = (ItemViewHolder)holder; - itemViewHolder.mItem = mValues.get(position-1); + } else if (holder instanceof ItemViewHolder) { + ItemViewHolder itemViewHolder = (ItemViewHolder) holder; + itemViewHolder.mItem = mValues.get(position - 1); itemViewHolder.mContentView.setText(itemViewHolder.mItem.getName()); itemViewHolder.itemView.setOnClickListener(view -> { if (mOnClick != null) { - mOnClick.onItemCallback(itemViewHolder.mItem); + mOnClick.onItem(itemViewHolder.mItem); } }); } @@ -70,7 +71,7 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter { - private final List mValues; + private final ItemCallback mOnClick; - public EditSkillsRecyclerViewAdapter(List items) { + public EditSkillsRecyclerViewAdapter(List items, ItemCallback onClick) { mValues = items; + mOnClick = onClick; } + @NonNull @Override - public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { return new ViewHolder(FragmentEditSkillsListItemBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); } @Override - public void onBindViewHolder(final ViewHolder holder, int position) { + public void onBindViewHolder(@NonNull final ViewHolder holder, int position) { holder.mItem = mValues.get(position); holder.mContentView.setText(mValues.get(position).name); + holder.itemView.setOnClickListener(v -> { + if (mOnClick != null) { + mOnClick.onItem(holder.mItem); + } + }); } @Override @@ -39,18 +47,19 @@ public class EditSkillsRecyclerViewAdapter extends RecyclerView.Adapter { private final List mValues; - private final ItemCallback mOnClick; + private final ItemCallback mOnClick; - public EditStringsRecyclerViewAdapter(List items, ItemCallback onClick) { + public EditStringsRecyclerViewAdapter(List items, ItemCallback onClick) { mValues = items; mOnClick = onClick; } @@ -33,7 +34,7 @@ public class EditStringsRecyclerViewAdapter extends RecyclerView.Adapter { if (mOnClick != null) { - mOnClick.onItemCallback(holder.mItem); + mOnClick.onItem(holder.mItem); } }); } @@ -43,10 +44,6 @@ public class EditStringsRecyclerViewAdapter extends RecyclerView.Adapter mOnClick; - protected EditTraitsRecyclerViewAdapter(ItemCallback onClick) { + protected EditTraitsRecyclerViewAdapter(ItemCallback onClick) { super(DIFF_CALLBACK); mOnClick = onClick; } @@ -46,15 +47,11 @@ public class EditTraitsRecyclerViewAdapter extends ListAdapter { if (mOnClick != null) { - mOnClick.onItemCallback(holder.mItem); + mOnClick.onItem(holder.mItem); } }); } - public interface ItemCallback { - void onItemCallback(Trait trait); - } - public static class ViewHolder extends RecyclerView.ViewHolder { public final TextView mContentView; public Trait mItem; diff --git a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryRecyclerViewAdapter.java b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryRecyclerViewAdapter.java index f9382e2..171cfb3 100644 --- a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryRecyclerViewAdapter.java +++ b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryRecyclerViewAdapter.java @@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.majinnaibu.monstercards.R; import com.majinnaibu.monstercards.models.Monster; +import com.majinnaibu.monstercards.utils.ItemCallback; public class LibraryRecyclerViewAdapter extends ListAdapter { private static final DiffUtil.ItemCallback DIFF_CALLBACK = new DiffUtil.ItemCallback() { @@ -25,9 +26,9 @@ public class LibraryRecyclerViewAdapter extends ListAdapter mOnClick; - public LibraryRecyclerViewAdapter(ItemCallback onClick) { + public LibraryRecyclerViewAdapter(ItemCallback onClick) { super(DIFF_CALLBACK); mOnClick = onClick; } @@ -48,15 +49,11 @@ public class LibraryRecyclerViewAdapter extends ListAdapter { if (mOnClick != null) { - mOnClick.onItemCallback(holder.item); + mOnClick.onItem(holder.item); } }); } - public interface ItemCallback { - void onItemCallback(Monster monster); - } - static class ViewHolder extends RecyclerView.ViewHolder { final TextView contentView; Monster item; diff --git a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchResultsRecyclerViewAdapter.java b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchResultsRecyclerViewAdapter.java index e28dea6..ed57915 100644 --- a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchResultsRecyclerViewAdapter.java +++ b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchResultsRecyclerViewAdapter.java @@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.majinnaibu.monstercards.R; import com.majinnaibu.monstercards.data.MonsterRepository; import com.majinnaibu.monstercards.models.Monster; +import com.majinnaibu.monstercards.utils.ItemCallback; import com.majinnaibu.monstercards.utils.Logger; import org.jetbrains.annotations.NotNull; @@ -23,12 +24,12 @@ import io.reactivex.rxjava3.disposables.Disposable; public class SearchResultsRecyclerViewAdapter extends RecyclerView.Adapter { private final MonsterRepository mRepository; - private final ItemCallback mOnClickHandler; + private final ItemCallback mOnClickHandler; private String mSearchText; private List mValues; private Disposable mSubscriptionHandler; public SearchResultsRecyclerViewAdapter(MonsterRepository repository, - ItemCallback onClick) { + ItemCallback onClick) { mRepository = repository; mSearchText = ""; mValues = new ArrayList<>(); @@ -76,10 +77,6 @@ public class SearchResultsRecyclerViewAdapter extends RecyclerView.Adapter { + void onItem(T item); +}