Adds generic ItemCallback interface.

This commit is contained in:
2021-08-30 11:06:40 -07:00
parent ca41628377
commit 688cfd3397
8 changed files with 32 additions and 48 deletions

View File

@@ -20,6 +20,7 @@ import com.majinnaibu.monstercards.databinding.CardMonsterBinding;
import com.majinnaibu.monstercards.helpers.CommonMarkHelper; import com.majinnaibu.monstercards.helpers.CommonMarkHelper;
import com.majinnaibu.monstercards.models.Monster; import com.majinnaibu.monstercards.models.Monster;
import com.majinnaibu.monstercards.models.Trait; import com.majinnaibu.monstercards.models.Trait;
import com.majinnaibu.monstercards.utils.ItemCallback;
import com.majinnaibu.monstercards.utils.Logger; import com.majinnaibu.monstercards.utils.Logger;
import java.util.Locale; import java.util.Locale;
@@ -36,9 +37,9 @@ public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, Dashboard
return Monster.areContentsTheSame(oldItem, newItem); return Monster.areContentsTheSame(oldItem, newItem);
} }
}; };
private final ItemCallback mOnClick; private final ItemCallback<Monster> mOnClick;
protected DashboardRecyclerViewAdapter(ItemCallback onClick) { protected DashboardRecyclerViewAdapter(ItemCallback<Monster> onClick) {
super(DIFF_CALLBACK); super(DIFF_CALLBACK);
mOnClick = onClick; mOnClick = onClick;
} }
@@ -119,15 +120,11 @@ public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, Dashboard
holder.itemView.setOnClickListener(v -> { holder.itemView.setOnClickListener(v -> {
if (mOnClick != null) { 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 static class ViewHolder extends RecyclerView.ViewHolder {
public final TextView name; public final TextView name;
public final TextView meta; public final TextView meta;

View File

@@ -13,13 +13,14 @@ import com.majinnaibu.monstercards.databinding.FragmentEditLanguagesListHeaderBi
import com.majinnaibu.monstercards.databinding.FragmentEditLanguagesListItemBinding; import com.majinnaibu.monstercards.databinding.FragmentEditLanguagesListItemBinding;
import com.majinnaibu.monstercards.models.Language; import com.majinnaibu.monstercards.models.Language;
import com.majinnaibu.monstercards.ui.components.Stepper; import com.majinnaibu.monstercards.ui.components.Stepper;
import com.majinnaibu.monstercards.utils.ItemCallback;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final List<Language> mValues; private final List<Language> mValues;
private final ItemCallback mOnClick; private final ItemCallback<Language> mOnClick;
private final int mTelepathyRange; private final int mTelepathyRange;
private final String mUnderstandsBut; private final String mUnderstandsBut;
private final Stepper.OnValueChangeListener mOnTelepathyRangeChanged; private final Stepper.OnValueChangeListener mOnTelepathyRangeChanged;
@@ -29,7 +30,7 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
private final int ITEM_VIEW_TYPE = 2; private final int ITEM_VIEW_TYPE = 2;
private final String DISTANCE_IN_FEET_FORMAT = "%d ft."; private final String DISTANCE_IN_FEET_FORMAT = "%d ft.";
public EditLanguagesRecyclerViewAdapter(List<Language> items, ItemCallback onClick, int telepathyRange, Stepper.OnValueChangeListener telepathyRangeChangedListener, String understandsBut, TextWatcher understandsButChangedListener) { public EditLanguagesRecyclerViewAdapter(List<Language> items, ItemCallback<Language> onClick, int telepathyRange, Stepper.OnValueChangeListener telepathyRangeChangedListener, String understandsBut, TextWatcher understandsButChangedListener) {
mValues = items; mValues = items;
mOnClick = onClick; mOnClick = onClick;
mTelepathyRange = telepathyRange; mTelepathyRange = telepathyRange;
@@ -62,7 +63,7 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
itemViewHolder.mContentView.setText(itemViewHolder.mItem.getName()); itemViewHolder.mContentView.setText(itemViewHolder.mItem.getName());
itemViewHolder.itemView.setOnClickListener(view -> { itemViewHolder.itemView.setOnClickListener(view -> {
if (mOnClick != null) { if (mOnClick != null) {
mOnClick.onItemCallback(itemViewHolder.mItem); mOnClick.onItem(itemViewHolder.mItem);
} }
}); });
} }
@@ -81,10 +82,6 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
return ITEM_VIEW_TYPE; return ITEM_VIEW_TYPE;
} }
public interface ItemCallback {
void onItemCallback(Language language);
}
public static class HeaderViewHolder extends RecyclerView.ViewHolder { public static class HeaderViewHolder extends RecyclerView.ViewHolder {
public final Stepper telepathy; public final Stepper telepathy;
public final EditText understandsBut; public final EditText understandsBut;

View File

@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.majinnaibu.monstercards.databinding.FragmentEditSkillsListItemBinding; import com.majinnaibu.monstercards.databinding.FragmentEditSkillsListItemBinding;
import com.majinnaibu.monstercards.models.Skill; import com.majinnaibu.monstercards.models.Skill;
import com.majinnaibu.monstercards.utils.ItemCallback;
import java.util.List; import java.util.List;
@@ -17,9 +18,9 @@ import java.util.List;
*/ */
public class EditSkillsRecyclerViewAdapter extends RecyclerView.Adapter<EditSkillsRecyclerViewAdapter.ViewHolder> { public class EditSkillsRecyclerViewAdapter extends RecyclerView.Adapter<EditSkillsRecyclerViewAdapter.ViewHolder> {
private final List<Skill> mValues; private final List<Skill> mValues;
private final ItemCallback mOnClick; private final ItemCallback<Skill> mOnClick;
public EditSkillsRecyclerViewAdapter(List<Skill> items, ItemCallback onClick) { public EditSkillsRecyclerViewAdapter(List<Skill> items, ItemCallback<Skill> onClick) {
mValues = items; mValues = items;
mOnClick = onClick; mOnClick = onClick;
} }
@@ -36,7 +37,7 @@ public class EditSkillsRecyclerViewAdapter extends RecyclerView.Adapter<EditSkil
holder.mContentView.setText(mValues.get(position).name); holder.mContentView.setText(mValues.get(position).name);
holder.itemView.setOnClickListener(v -> { holder.itemView.setOnClickListener(v -> {
if (mOnClick != null) { if (mOnClick != null) {
mOnClick.onItemCallback(holder.mItem); mOnClick.onItem(holder.mItem);
} }
}); });
} }
@@ -46,10 +47,6 @@ public class EditSkillsRecyclerViewAdapter extends RecyclerView.Adapter<EditSkil
return mValues.size(); return mValues.size();
} }
public interface ItemCallback {
void onItemCallback(Skill skill);
}
public static class ViewHolder extends RecyclerView.ViewHolder { public static class ViewHolder extends RecyclerView.ViewHolder {
public final TextView mContentView; public final TextView mContentView;
public Skill mItem; public Skill mItem;

View File

@@ -8,14 +8,15 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.majinnaibu.monstercards.databinding.FragmentEditStringsListItemBinding; import com.majinnaibu.monstercards.databinding.FragmentEditStringsListItemBinding;
import com.majinnaibu.monstercards.utils.ItemCallback;
import java.util.List; import java.util.List;
public class EditStringsRecyclerViewAdapter extends RecyclerView.Adapter<EditStringsRecyclerViewAdapter.ViewHolder> { public class EditStringsRecyclerViewAdapter extends RecyclerView.Adapter<EditStringsRecyclerViewAdapter.ViewHolder> {
private final List<String> mValues; private final List<String> mValues;
private final ItemCallback mOnClick; private final ItemCallback<String> mOnClick;
public EditStringsRecyclerViewAdapter(List<String> items, ItemCallback onClick) { public EditStringsRecyclerViewAdapter(List<String> items, ItemCallback<String> onClick) {
mValues = items; mValues = items;
mOnClick = onClick; mOnClick = onClick;
} }
@@ -32,7 +33,7 @@ public class EditStringsRecyclerViewAdapter extends RecyclerView.Adapter<EditStr
holder.mContentView.setText(mValues.get(position)); holder.mContentView.setText(mValues.get(position));
holder.itemView.setOnClickListener(v -> { holder.itemView.setOnClickListener(v -> {
if (mOnClick != null) { if (mOnClick != null) {
mOnClick.onItemCallback(holder.mItem); mOnClick.onItem(holder.mItem);
} }
}); });
} }
@@ -42,10 +43,6 @@ public class EditStringsRecyclerViewAdapter extends RecyclerView.Adapter<EditStr
return mValues.size(); return mValues.size();
} }
public interface ItemCallback {
void onItemCallback(String value);
}
public static class ViewHolder extends RecyclerView.ViewHolder { public static class ViewHolder extends RecyclerView.ViewHolder {
public final TextView mContentView; public final TextView mContentView;
public String mItem; public String mItem;

View File

@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.majinnaibu.monstercards.databinding.FragmentEditTraitsListItemBinding; import com.majinnaibu.monstercards.databinding.FragmentEditTraitsListItemBinding;
import com.majinnaibu.monstercards.models.Trait; import com.majinnaibu.monstercards.models.Trait;
import com.majinnaibu.monstercards.utils.ItemCallback;
public class EditTraitsRecyclerViewAdapter extends ListAdapter<Trait, EditTraitsRecyclerViewAdapter.ViewHolder> { public class EditTraitsRecyclerViewAdapter extends ListAdapter<Trait, EditTraitsRecyclerViewAdapter.ViewHolder> {
private static final DiffUtil.ItemCallback<Trait> DIFF_CALLBACK = new DiffUtil.ItemCallback<Trait>() { private static final DiffUtil.ItemCallback<Trait> DIFF_CALLBACK = new DiffUtil.ItemCallback<Trait>() {
@@ -25,9 +26,9 @@ public class EditTraitsRecyclerViewAdapter extends ListAdapter<Trait, EditTraits
return oldItem.equals(newItem); return oldItem.equals(newItem);
} }
}; };
private final ItemCallback mOnClick; private final ItemCallback<Trait> mOnClick;
protected EditTraitsRecyclerViewAdapter(ItemCallback onClick) { protected EditTraitsRecyclerViewAdapter(ItemCallback<Trait> onClick) {
super(DIFF_CALLBACK); super(DIFF_CALLBACK);
mOnClick = onClick; mOnClick = onClick;
} }
@@ -44,15 +45,11 @@ public class EditTraitsRecyclerViewAdapter extends ListAdapter<Trait, EditTraits
holder.mContentView.setText(holder.mItem.name); holder.mContentView.setText(holder.mItem.name);
holder.itemView.setOnClickListener(v -> { holder.itemView.setOnClickListener(v -> {
if (mOnClick != null) { 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 static class ViewHolder extends RecyclerView.ViewHolder {
public final TextView mContentView; public final TextView mContentView;
public Trait mItem; public Trait mItem;

View File

@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.majinnaibu.monstercards.R; import com.majinnaibu.monstercards.R;
import com.majinnaibu.monstercards.models.Monster; import com.majinnaibu.monstercards.models.Monster;
import com.majinnaibu.monstercards.utils.ItemCallback;
public class LibraryRecyclerViewAdapter extends ListAdapter<Monster, LibraryRecyclerViewAdapter.ViewHolder> { public class LibraryRecyclerViewAdapter extends ListAdapter<Monster, LibraryRecyclerViewAdapter.ViewHolder> {
private static final DiffUtil.ItemCallback<Monster> DIFF_CALLBACK = new DiffUtil.ItemCallback<Monster>() { private static final DiffUtil.ItemCallback<Monster> DIFF_CALLBACK = new DiffUtil.ItemCallback<Monster>() {
@@ -25,9 +26,9 @@ public class LibraryRecyclerViewAdapter extends ListAdapter<Monster, LibraryRecy
return Monster.areContentsTheSame(oldItem, newItem); return Monster.areContentsTheSame(oldItem, newItem);
} }
}; };
private final ItemCallback mOnClick; private final ItemCallback<Monster> mOnClick;
public LibraryRecyclerViewAdapter(ItemCallback onClick) { public LibraryRecyclerViewAdapter(ItemCallback<Monster> onClick) {
super(DIFF_CALLBACK); super(DIFF_CALLBACK);
mOnClick = onClick; mOnClick = onClick;
} }
@@ -48,15 +49,11 @@ public class LibraryRecyclerViewAdapter extends ListAdapter<Monster, LibraryRecy
holder.itemView.setTag(monster); holder.itemView.setTag(monster);
holder.itemView.setOnClickListener(v -> { holder.itemView.setOnClickListener(v -> {
if (mOnClick != null) { if (mOnClick != null) {
mOnClick.onItemCallback(holder.item); mOnClick.onItem(holder.item);
} }
}); });
} }
public interface ItemCallback {
void onItemCallback(Monster monster);
}
static class ViewHolder extends RecyclerView.ViewHolder { static class ViewHolder extends RecyclerView.ViewHolder {
final TextView contentView; final TextView contentView;
Monster item; Monster item;

View File

@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.majinnaibu.monstercards.R; import com.majinnaibu.monstercards.R;
import com.majinnaibu.monstercards.data.MonsterRepository; import com.majinnaibu.monstercards.data.MonsterRepository;
import com.majinnaibu.monstercards.models.Monster; import com.majinnaibu.monstercards.models.Monster;
import com.majinnaibu.monstercards.utils.ItemCallback;
import com.majinnaibu.monstercards.utils.Logger; import com.majinnaibu.monstercards.utils.Logger;
import java.util.ArrayList; import java.util.ArrayList;
@@ -21,13 +22,13 @@ import io.reactivex.rxjava3.disposables.Disposable;
public class SearchResultsRecyclerViewAdapter extends RecyclerView.Adapter<SearchResultsRecyclerViewAdapter.ViewHolder> { public class SearchResultsRecyclerViewAdapter extends RecyclerView.Adapter<SearchResultsRecyclerViewAdapter.ViewHolder> {
private final MonsterRepository mRepository; private final MonsterRepository mRepository;
private final ItemCallback mOnClickHandler; private final ItemCallback<Monster> mOnClickHandler;
private String mSearchText; private String mSearchText;
private List<Monster> mValues; private List<Monster> mValues;
private Disposable mSubscriptionHandler; private Disposable mSubscriptionHandler;
public SearchResultsRecyclerViewAdapter(MonsterRepository repository, public SearchResultsRecyclerViewAdapter(MonsterRepository repository,
ItemCallback onClick) { ItemCallback<Monster> onClick) {
mRepository = repository; mRepository = repository;
mSearchText = ""; mSearchText = "";
mValues = new ArrayList<>(); mValues = new ArrayList<>();
@@ -75,10 +76,6 @@ public class SearchResultsRecyclerViewAdapter extends RecyclerView.Adapter<Searc
return mValues.size(); return mValues.size();
} }
public interface ItemCallback {
void onItem(Monster monster);
}
public static class ViewHolder extends RecyclerView.ViewHolder { public static class ViewHolder extends RecyclerView.ViewHolder {
final TextView mContentView; final TextView mContentView;

View File

@@ -0,0 +1,5 @@
package com.majinnaibu.monstercards.utils;
public interface ItemCallback<T> {
void onItem(T item);
}