Merge "Create separate setter for AlphaJumpAdapter." into androidx-master-dev
diff --git a/car/core/api/1.0.0-alpha8.txt b/car/core/api/1.0.0-alpha8.txt
index fd5adc6..79cec7e 100644
--- a/car/core/api/1.0.0-alpha8.txt
+++ b/car/core/api/1.0.0-alpha8.txt
@@ -499,6 +499,7 @@
method public void removeOnScrollListener(androidx.recyclerview.widget.RecyclerView.OnScrollListener);
method public void scrollToPosition(int);
method public void setAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
+ method public void setAlphaJumpAdapter(androidx.car.widget.AlphaJumpAdapter);
method public void setAlphaJumpVisible(boolean);
method public void setDividerColor(@ColorInt int);
method public void setDividerVisibilityManager(androidx.car.widget.PagedListView.DividerVisibilityManager!);
@@ -573,7 +574,8 @@
method public void setButtonTintColor(@ColorRes int);
method public void setDownButtonIcon(android.graphics.drawable.Drawable!);
method public void setDownEnabled(boolean);
- method public void setPaginationListener(androidx.car.widget.PagedScrollBarView.PaginationListener!);
+ method public void setOnAlphaJumpListener(androidx.car.widget.PagedScrollBarView.OnAlphaJumpListener?);
+ method public void setPaginationListener(androidx.car.widget.PagedScrollBarView.PaginationListener?);
method public void setParameters(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, boolean);
method public void setScrollbarThumbColor(@ColorRes int);
method public void setScrollbarThumbEnabled(boolean);
@@ -581,8 +583,12 @@
method public void setUpEnabled(boolean);
}
- public static interface PagedScrollBarView.PaginationListener {
+ public static interface PagedScrollBarView.OnAlphaJumpListener {
method public void onAlphaJump();
+ }
+
+ public static interface PagedScrollBarView.PaginationListener {
+ method @Deprecated public default void onAlphaJump();
method public void onPaginate(int);
field public static final int PAGE_DOWN = 1; // 0x1
field public static final int PAGE_UP = 0; // 0x0
diff --git a/car/core/api/current.txt b/car/core/api/current.txt
index fd5adc6..79cec7e 100644
--- a/car/core/api/current.txt
+++ b/car/core/api/current.txt
@@ -499,6 +499,7 @@
method public void removeOnScrollListener(androidx.recyclerview.widget.RecyclerView.OnScrollListener);
method public void scrollToPosition(int);
method public void setAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
+ method public void setAlphaJumpAdapter(androidx.car.widget.AlphaJumpAdapter);
method public void setAlphaJumpVisible(boolean);
method public void setDividerColor(@ColorInt int);
method public void setDividerVisibilityManager(androidx.car.widget.PagedListView.DividerVisibilityManager!);
@@ -573,7 +574,8 @@
method public void setButtonTintColor(@ColorRes int);
method public void setDownButtonIcon(android.graphics.drawable.Drawable!);
method public void setDownEnabled(boolean);
- method public void setPaginationListener(androidx.car.widget.PagedScrollBarView.PaginationListener!);
+ method public void setOnAlphaJumpListener(androidx.car.widget.PagedScrollBarView.OnAlphaJumpListener?);
+ method public void setPaginationListener(androidx.car.widget.PagedScrollBarView.PaginationListener?);
method public void setParameters(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, boolean);
method public void setScrollbarThumbColor(@ColorRes int);
method public void setScrollbarThumbEnabled(boolean);
@@ -581,8 +583,12 @@
method public void setUpEnabled(boolean);
}
- public static interface PagedScrollBarView.PaginationListener {
+ public static interface PagedScrollBarView.OnAlphaJumpListener {
method public void onAlphaJump();
+ }
+
+ public static interface PagedScrollBarView.PaginationListener {
+ method @Deprecated public default void onAlphaJump();
method public void onPaginate(int);
field public static final int PAGE_DOWN = 1; // 0x1
field public static final int PAGE_UP = 0; // 0x0
diff --git a/car/core/api/restricted_1.0.0-alpha8.txt b/car/core/api/restricted_1.0.0-alpha8.txt
index b4ab402..480b3d0 100644
--- a/car/core/api/restricted_1.0.0-alpha8.txt
+++ b/car/core/api/restricted_1.0.0-alpha8.txt
@@ -524,6 +524,7 @@
method public void removeOnScrollListener(androidx.recyclerview.widget.RecyclerView.OnScrollListener);
method public void scrollToPosition(int);
method public void setAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
+ method public void setAlphaJumpAdapter(androidx.car.widget.AlphaJumpAdapter);
method public void setAlphaJumpVisible(boolean);
method public void setDividerColor(@ColorInt int);
method public void setDividerVisibilityManager(androidx.car.widget.PagedListView.DividerVisibilityManager!);
@@ -598,7 +599,8 @@
method public void setButtonTintColor(@ColorRes int);
method public void setDownButtonIcon(android.graphics.drawable.Drawable!);
method public void setDownEnabled(boolean);
- method public void setPaginationListener(androidx.car.widget.PagedScrollBarView.PaginationListener!);
+ method public void setOnAlphaJumpListener(androidx.car.widget.PagedScrollBarView.OnAlphaJumpListener?);
+ method public void setPaginationListener(androidx.car.widget.PagedScrollBarView.PaginationListener?);
method public void setParameters(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, boolean);
method public void setScrollbarThumbColor(@ColorRes int);
method public void setScrollbarThumbEnabled(boolean);
@@ -606,8 +608,12 @@
method public void setUpEnabled(boolean);
}
- public static interface PagedScrollBarView.PaginationListener {
+ public static interface PagedScrollBarView.OnAlphaJumpListener {
method public void onAlphaJump();
+ }
+
+ public static interface PagedScrollBarView.PaginationListener {
+ method @Deprecated public default void onAlphaJump();
method public void onPaginate(int);
field public static final int PAGE_DOWN = 1; // 0x1
field public static final int PAGE_UP = 0; // 0x0
diff --git a/car/core/api/restricted_current.txt b/car/core/api/restricted_current.txt
index b4ab402..480b3d0 100644
--- a/car/core/api/restricted_current.txt
+++ b/car/core/api/restricted_current.txt
@@ -524,6 +524,7 @@
method public void removeOnScrollListener(androidx.recyclerview.widget.RecyclerView.OnScrollListener);
method public void scrollToPosition(int);
method public void setAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
+ method public void setAlphaJumpAdapter(androidx.car.widget.AlphaJumpAdapter);
method public void setAlphaJumpVisible(boolean);
method public void setDividerColor(@ColorInt int);
method public void setDividerVisibilityManager(androidx.car.widget.PagedListView.DividerVisibilityManager!);
@@ -598,7 +599,8 @@
method public void setButtonTintColor(@ColorRes int);
method public void setDownButtonIcon(android.graphics.drawable.Drawable!);
method public void setDownEnabled(boolean);
- method public void setPaginationListener(androidx.car.widget.PagedScrollBarView.PaginationListener!);
+ method public void setOnAlphaJumpListener(androidx.car.widget.PagedScrollBarView.OnAlphaJumpListener?);
+ method public void setPaginationListener(androidx.car.widget.PagedScrollBarView.PaginationListener?);
method public void setParameters(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, boolean);
method public void setScrollbarThumbColor(@ColorRes int);
method public void setScrollbarThumbEnabled(boolean);
@@ -606,8 +608,12 @@
method public void setUpEnabled(boolean);
}
- public static interface PagedScrollBarView.PaginationListener {
+ public static interface PagedScrollBarView.OnAlphaJumpListener {
method public void onAlphaJump();
+ }
+
+ public static interface PagedScrollBarView.PaginationListener {
+ method @Deprecated public default void onAlphaJump();
method public void onPaginate(int);
field public static final int PAGE_DOWN = 1; // 0x1
field public static final int PAGE_UP = 0; // 0x0
diff --git a/car/core/src/androidTest/java/androidx/car/widget/AlphaJumpPagedListViewTest.java b/car/core/src/androidTest/java/androidx/car/widget/AlphaJumpPagedListViewTest.java
index 44a55eb..2119810 100644
--- a/car/core/src/androidTest/java/androidx/car/widget/AlphaJumpPagedListViewTest.java
+++ b/car/core/src/androidTest/java/androidx/car/widget/AlphaJumpPagedListViewTest.java
@@ -87,7 +87,9 @@
try {
mActivityRule.runOnUiThread(() -> {
mPagedListView.setMaxPages(PagedListView.ItemCap.UNLIMITED);
- mPagedListView.setAdapter(new AlphaJumpTestAdapter());
+ AlphaJumpTestAdapter adapter = new AlphaJumpTestAdapter();
+ mPagedListView.setAdapter(adapter);
+ mPagedListView.setAlphaJumpAdapter(adapter);
});
} catch (Throwable throwable) {
throwable.printStackTrace();
diff --git a/car/core/src/main/java/androidx/car/app/CarDialogUtil.java b/car/core/src/main/java/androidx/car/app/CarDialogUtil.java
index f47e7f1..39f2244 100644
--- a/car/core/src/main/java/androidx/car/app/CarDialogUtil.java
+++ b/car/core/src/main/java/androidx/car/app/CarDialogUtil.java
@@ -99,10 +99,6 @@
Log.e(TAG, "Unknown pagination direction (" + direction + ")");
}
}
-
- @Override
- public void onAlphaJump() {
- }
});
}
diff --git a/car/core/src/main/java/androidx/car/widget/PagedListView.java b/car/core/src/main/java/androidx/car/widget/PagedListView.java
index ea89551..5b9d47c 100644
--- a/car/core/src/main/java/androidx/car/widget/PagedListView.java
+++ b/car/core/src/main/java/androidx/car/widget/PagedListView.java
@@ -118,6 +118,7 @@
private int mRowsPerPage = -1;
private RecyclerView.Adapter<? extends RecyclerView.ViewHolder> mAdapter;
+ private AlphaJumpAdapter mAlphaJumpAdapter;
/** Maximum number of pages to show. */
private int mMaxPages = UNLIMITED_PAGES;
@@ -356,11 +357,6 @@
Log.e(TAG, "Unknown pagination direction (" + direction + ")");
}
}
-
- @Override
- public void onAlphaJump() {
- setAlphaJumpVisible(true);
- }
});
if (a.hasValue(R.styleable.PagedListView_scrollBarGravity)) {
@@ -781,7 +777,17 @@
mRecyclerView.setAdapter(adapter);
updateMaxItems();
- updateAlphaJump();
+ }
+
+ /**
+ * Sets the alpha jump adapter for the list.
+ *
+ * @param adapter The alpha jump adapter to set for the list.
+ */
+ public void setAlphaJumpAdapter(@NonNull AlphaJumpAdapter adapter) {
+ mAlphaJumpAdapter = adapter;
+ mScrollBarView.setOnAlphaJumpListener(() -> setAlphaJumpVisible(true));
+ mScrollBarView.setShowAlphaJump(true);
}
/**
@@ -1388,11 +1394,6 @@
dispatchThawSelfOnly(container);
}
- private void updateAlphaJump() {
- boolean supportsAlphaJump = (mAdapter instanceof AlphaJumpAdapter);
- mScrollBarView.setShowAlphaJump(supportsAlphaJump);
- }
-
/**
* Returns {@code true} if the Alpha Jump Overlay is shown.
*/
diff --git a/car/core/src/main/java/androidx/car/widget/PagedScrollBarView.java b/car/core/src/main/java/androidx/car/widget/PagedScrollBarView.java
index 78cc96b..fa47350 100644
--- a/car/core/src/main/java/androidx/car/widget/PagedScrollBarView.java
+++ b/car/core/src/main/java/androidx/car/widget/PagedScrollBarView.java
@@ -34,6 +34,7 @@
import androidx.annotation.ColorRes;
import androidx.annotation.DrawableRes;
import androidx.annotation.IntRange;
+import androidx.annotation.Nullable;
import androidx.car.R;
import androidx.core.content.ContextCompat;
@@ -58,6 +59,22 @@
* <p>AlphaJump buckets only support characters from the {@code en} language. Characters
* from other languages not supported and bucketing behavior is undefined. AlphaJump overlay
* is still displayed if all buckets are empty.
+ *
+ * @deprecated Use {@link OnAlphaJumpListener#onAlphaJump()} instead.
+ */
+ @Deprecated
+ default void onAlphaJump() {}
+ }
+
+ public interface OnAlphaJumpListener {
+ /**
+ * Called when the 'alpha jump' button is clicked and the linked view should switch into
+ * alpha jump mode, where we display a list of buttons to allow the user to quickly scroll
+ * to a certain point in the list, bypassing a lot of manual scrolling.
+ *
+ * <p>AlphaJump buckets only support characters from the {@code en} language. Characters
+ * from other languages not supported and bucketing behavior is undefined. AlphaJump overlay
+ * is still displayed if all buckets are empty.
*/
void onAlphaJump();
}
@@ -166,12 +183,21 @@
*
* @param listener The listener to set.
*/
- public void setPaginationListener(PaginationListener listener) {
+ public void setPaginationListener(@Nullable PaginationListener listener) {
mUpButtonClickListener.setPaginationListener(listener);
mDownButtonClickListener.setPaginationListener(listener);
mAlphaJumpButtonClickListener.setPaginationListener(listener);
}
+ /**
+ * Sets the listener that will be notified when alpha jump button has been pressed.
+ *
+ * @param listener The listener to set.
+ */
+ public void setOnAlphaJumpListener(@Nullable OnAlphaJumpListener listener) {
+ mAlphaJumpButtonClickListener.setOnAlphaJumpListener(listener);
+ }
+
/** Returns {@code true} if the "up" button is pressed */
public boolean isUpPressed() {
return mUpButton.isPressed();
@@ -554,17 +580,26 @@
}
private static class AlphaJumpButtonClickListener implements View.OnClickListener {
+ private OnAlphaJumpListener mOnAlphaJumpListener;
private PaginationListener mPaginationListener;
AlphaJumpButtonClickListener() {
}
+ public void setOnAlphaJumpListener(OnAlphaJumpListener listener) {
+ mOnAlphaJumpListener = listener;
+ }
+
public void setPaginationListener(PaginationListener listener) {
mPaginationListener = listener;
}
@Override
public void onClick(View v) {
+ if (mOnAlphaJumpListener != null) {
+ mOnAlphaJumpListener.onAlphaJump();
+ }
+
if (mPaginationListener != null) {
mPaginationListener.onAlphaJump();
}
diff --git a/samples/SupportCarDemos/src/main/java/com/example/androidx/car/AlphaJumpActivity.java b/samples/SupportCarDemos/src/main/java/com/example/androidx/car/AlphaJumpActivity.java
index 8ad42a5..3917c9f 100644
--- a/samples/SupportCarDemos/src/main/java/com/example/androidx/car/AlphaJumpActivity.java
+++ b/samples/SupportCarDemos/src/main/java/com/example/androidx/car/AlphaJumpActivity.java
@@ -83,7 +83,9 @@
toolbar.setNavigationIconOnClickListener(v -> onNavigateUp());
PagedListView pagedListView = findViewById(R.id.paged_list_view);
- pagedListView.setAdapter(new CheeseAdapter());
+ CheeseAdapter adapter = new CheeseAdapter();
+ pagedListView.setAdapter(adapter);
+ pagedListView.setAlphaJumpAdapter(adapter);
}
/**