diff options
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java')
-rw-r--r-- | app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java | 146 |
1 files changed, 67 insertions, 79 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java index af3690c3..5ee97303 100644 --- a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java +++ b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java @@ -19,6 +19,8 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; import android.os.Build; + +import androidx.annotation.NonNull; import androidx.appcompat.view.ActionMode; import androidx.recyclerview.widget.RecyclerView; import android.util.Log; @@ -34,6 +36,7 @@ import android.widget.PopupMenu; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; import github.daneren2005.dsub.R; @@ -46,7 +49,7 @@ import github.daneren2005.dsub.view.UpdateView; import github.daneren2005.dsub.view.UpdateView.UpdateViewHolder; public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewHolder<T>> { - private static String TAG = SectionAdapter.class.getSimpleName(); + private static final String TAG = SectionAdapter.class.getSimpleName(); public static int VIEW_TYPE_HEADER = 0; public static String[] ignoredArticles; @@ -54,7 +57,7 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH protected List<String> headers; protected List<List<T>> sections; protected boolean singleSectionHeader; - protected OnItemClickedListener<T> onItemClickedListener; + protected OnItemClickedListener onItemClickedListener; protected List<T> selected = new ArrayList<>(); protected List<UpdateView> selectedViews = new ArrayList<>(); protected ActionMode currentActionMode; @@ -66,7 +69,7 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH } public SectionAdapter(Context context, List<T> section, boolean singleSectionHeader) { this.context = context; - this.headers = Arrays.asList("Section"); + this.headers = Collections.singletonList("Section"); this.sections = new ArrayList<>(); this.sections.add(section); this.singleSectionHeader = singleSectionHeader; @@ -81,19 +84,20 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH this.singleSectionHeader = singleSectionHeader; } - public void replaceExistingData(List<T> section) { - this.sections = new ArrayList<>(); - this.sections.add(section); - notifyDataSetChanged(); - } - public void replaceExistingData(List<String> headers, List<List<T>> sections) { - this.headers = headers; - this.sections = sections; - notifyDataSetChanged(); - } - +// public void replaceExistingData(List<T> section) { +// this.sections = new ArrayList<>(); +// this.sections.add(section); +// notifyDataSetChanged(); +// } +// public void replaceExistingData(List<String> headers, List<List<T>> sections) { +// this.headers = headers; +// this.sections = sections; +// notifyDataSetChanged(); +// } + + @NonNull @Override - public UpdateViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public UpdateViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if(viewType == VIEW_TYPE_HEADER) { return onCreateHeaderHolder(parent); } else { @@ -101,73 +105,59 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH final UpdateView updateView = holder.getUpdateView(); if(updateView != null) { - updateView.getChildAt(0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - T item = holder.getItem(); - updateView.onClick(); - if (currentActionMode != null) { - if(updateView.isCheckable()) { - if (selected.contains(item)) { - selected.remove(item); - selectedViews.remove(updateView); - setChecked(updateView, false); - } else { - selected.add(item); - selectedViews.add(updateView); - setChecked(updateView, true); - } + updateView.getChildAt(0).setOnClickListener(v -> { + T item = holder.getItem(); + updateView.onClick(); + if (currentActionMode != null) { + if(updateView.isCheckable()) { + if (selected.contains(item)) { + selected.remove(item); + selectedViews.remove(updateView); + setChecked(updateView, false); + } else { + selected.add(item); + selectedViews.add(updateView); + setChecked(updateView, true); + } - if (selected.isEmpty()) { - currentActionMode.finish(); - } else { - currentActionMode.setTitle(context.getResources().getString(R.string.select_album_n_selected, selected.size())); - } + if (selected.isEmpty()) { + currentActionMode.finish(); + } else { + currentActionMode.setTitle(context.getResources().getString(R.string.select_album_n_selected, selected.size())); } - } else if (onItemClickedListener != null) { - onItemClickedListener.onItemClicked(updateView, item); } + } else if (onItemClickedListener != null) { + onItemClickedListener.onItemClicked(updateView, item); } }); View moreButton = updateView.findViewById(R.id.item_more); if (moreButton != null) { - moreButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - try { - final T item = holder.getItem(); - if (onItemClickedListener != null) { - PopupMenu popup = new PopupMenu(context, v); - onItemClickedListener.onCreateContextMenu(popup.getMenu(), popup.getMenuInflater(), updateView, item); - - popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem menuItem) { - return onItemClickedListener.onContextItemSelected(menuItem, updateView, item); - } - }); - popup.show(); - } - } catch(Exception e) { - Log.w(TAG, "Failed to show popup", e); + moreButton.setOnClickListener(v -> { + try { + final T item = holder.getItem(); + if (onItemClickedListener != null) { + PopupMenu popup = new PopupMenu(context, v); + onItemClickedListener.onCreateContextMenu(popup.getMenu(), popup.getMenuInflater(), updateView, item); + + popup.setOnMenuItemClickListener(menuItem -> onItemClickedListener.onContextItemSelected(menuItem, updateView, item)); + popup.show(); } + } catch(Exception e) { + Log.w(TAG, "Failed to show popup", e); } }); if(checkable) { - updateView.getChildAt(0).setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - if(updateView.isCheckable()) { - if (currentActionMode == null) { - startActionMode(holder); - } else { - updateView.getChildAt(0).performClick(); - } + updateView.getChildAt(0).setOnLongClickListener(v -> { + if(updateView.isCheckable()) { + if (currentActionMode == null) { + startActionMode(holder); + } else { + updateView.getChildAt(0).performClick(); } - return true; } + return true; }); } } @@ -342,20 +332,18 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH selected.add(item); } public List<T> getSelected() { - List<T> selected = new ArrayList<>(); - selected.addAll(this.selected); - return selected; + return new ArrayList<>(this.selected); } public void clearSelected() { // TODO: This needs to work with multiple sections - for(T item: selected) { - int index = sections.get(0).indexOf(item); - - if(singleSectionHeader) { - index++; - } - } +// for(T item: selected) { +// int index = sections.get(0).indexOf(item); +// +// if(singleSectionHeader) { +// index++; +// } +// } selected.clear(); for(UpdateView updateView: selectedViews) { @@ -424,7 +412,7 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH MenuUtil.hideMenuItems(context, menu, updateView); mode.setTitle(context.getResources().getString(R.string.select_album_n_selected, selected.size())); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Util.getPreferences(context).getBoolean(Constants.PREFERENCES_KEY_COLOR_ACTION_BAR, true)) { + if (Util.getPreferences(context).getBoolean(Constants.PREFERENCES_KEY_COLOR_ACTION_BAR, true)) { TypedValue typedValue = new TypedValue(); Resources.Theme theme = context.getTheme(); theme.resolveAttribute(R.attr.colorPrimaryDark, typedValue, true); @@ -462,7 +450,7 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH } selectedViews.clear(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Util.getPreferences(context).getBoolean(Constants.PREFERENCES_KEY_COLOR_ACTION_BAR, true)) { + if (Util.getPreferences(context).getBoolean(Constants.PREFERENCES_KEY_COLOR_ACTION_BAR, true)) { Window window = ((SubsonicFragmentActivity) context).getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } |