aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
diff options
context:
space:
mode:
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.java146
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);
}