summaryrefslogtreecommitdiff
path: root/src/com/android/customization/widget/OptionSelectorController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/customization/widget/OptionSelectorController.java')
-rw-r--r--src/com/android/customization/widget/OptionSelectorController.java18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java
index 10b6d287..090dc7e4 100644
--- a/src/com/android/customization/widget/OptionSelectorController.java
+++ b/src/com/android/customization/widget/OptionSelectorController.java
@@ -37,9 +37,10 @@ import java.util.Set;
* Simple controller for a RecyclerView-based widget to hold the options for each customization
* section (eg, thumbnails for themes, clocks, grid sizes).
* To use, just pass the RV that will contain the tiles and the list of {@link CustomizationOption}
- * representing each option, and call {@link #initOptions()} to populate the widget.
+ * representing each option, and call {@link #initOptions(CustomizationManager)} to populate the
+ * widget.
*/
-public class OptionSelectorController {
+public class OptionSelectorController<T extends CustomizationOption<T>> {
/**
* Interface to be notified when an option is selected by the user.
@@ -52,14 +53,13 @@ public class OptionSelectorController {
}
private final RecyclerView mContainer;
- private final List<? extends CustomizationOption> mOptions;
+ private final List<T> mOptions;
private final Set<OptionSelectedListener> mListeners = new HashSet<>();
private RecyclerView.Adapter<TileViewHolder> mAdapter;
private CustomizationOption mSelectedOption;
- public OptionSelectorController(RecyclerView container,
- List<? extends CustomizationOption> options) {
+ public OptionSelectorController(RecyclerView container, List<T> options) {
mContainer = container;
mOptions = options;
}
@@ -84,7 +84,7 @@ public class OptionSelectorController {
/**
* Initializes the UI for the options passed in the constructor of this class.
*/
- public void initOptions(final CustomizationManager<? extends CustomizationOption> manager) {
+ public void initOptions(final CustomizationManager<T> manager) {
mAdapter = new RecyclerView.Adapter<TileViewHolder>() {
@Override
public int getItemViewType(int position) {
@@ -126,6 +126,12 @@ public class OptionSelectorController {
mContainer.setAdapter(mAdapter);
}
+ public void resetOptions(List<T> options) {
+ mOptions.clear();
+ mOptions.addAll(options);
+ mAdapter.notifyDataSetChanged();
+ }
+
private void notifyListeners() {
if (mListeners.isEmpty()) {
return;