Update code to match new CarUiRecyclerView design
Bug: 199201019
Test: Manually
Change-Id: I835f63773a5083df321ca667027d4f20ea9349fd
(cherry picked from commit 29963f87cb5483e543e8bf3b724c2d64e01484d0)
Merged-In: I835f63773a5083df321ca667027d4f20ea9349fd
diff --git a/src/com/android/car/media/BrowseViewController.java b/src/com/android/car/media/BrowseViewController.java
index c1869e4..337e5bc 100644
--- a/src/com/android/car/media/BrowseViewController.java
+++ b/src/com/android/car/media/BrowseViewController.java
@@ -32,7 +32,6 @@
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
-import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.android.car.apps.common.util.ViewUtils;
@@ -46,6 +45,7 @@
import com.android.car.media.common.source.MediaSource;
import com.android.car.ui.FocusArea;
import com.android.car.ui.baselayout.Insets;
+import com.android.car.ui.recyclerview.CarUiRecyclerView;
import com.android.car.uxr.LifeCycleObserverUxrContentLimiter;
import com.android.car.uxr.UxrContentLimiterImpl;
@@ -69,7 +69,7 @@
private final boolean mDisplayMediaItems;
private final LifeCycleObserverUxrContentLimiter mUxrContentLimiter;
private final View mContent;
- private final RecyclerView mBrowseList;
+ private final CarUiRecyclerView mBrowseList;
private final ImageView mErrorIcon;
private final TextView mMessage;
private final LimitedBrowseAdapter mLimitedBrowseAdapter;
@@ -187,9 +187,8 @@
mBrowseList.addItemDecoration(new GridSpacingItemDecoration(
activity.getResources().getDimensionPixelSize(R.dimen.grid_item_spacing)));
- GridLayoutManager manager = (GridLayoutManager) mBrowseList.getLayoutManager();
BrowseAdapter browseAdapter = new BrowseAdapter(mBrowseList.getContext());
- mLimitedBrowseAdapter = new LimitedBrowseAdapter(browseAdapter, manager,
+ mLimitedBrowseAdapter = new LimitedBrowseAdapter(mBrowseList, browseAdapter,
mBrowseAdapterObserver);
mBrowseList.setAdapter(mLimitedBrowseAdapter);
@@ -362,16 +361,16 @@
int duration = mFadeDuration;
if (items == null) {
mMessage.setText(getErrorMessage());
- ViewUtils.hideViewAnimated(mBrowseList, duration);
+ ViewUtils.hideViewAnimated(mBrowseList.getView(), duration);
ViewUtils.showViewAnimated(mMessage, duration);
ViewUtils.showViewAnimated(mErrorIcon, duration);
} else if (items.isEmpty()) {
mMessage.setText(R.string.nothing_to_play);
- ViewUtils.hideViewAnimated(mBrowseList, duration);
+ ViewUtils.hideViewAnimated(mBrowseList.getView(), duration);
ViewUtils.hideViewAnimated(mErrorIcon, duration);
ViewUtils.showViewAnimated(mMessage, duration);
} else {
- ViewUtils.showViewAnimated(mBrowseList, duration);
+ ViewUtils.showViewAnimated(mBrowseList.getView(), duration);
ViewUtils.hideViewAnimated(mErrorIcon, duration);
ViewUtils.hideViewAnimated(mMessage, duration);
}
diff --git a/src/com/android/car/media/MediaActivityController.java b/src/com/android/car/media/MediaActivityController.java
index be1371f..deda8e1 100644
--- a/src/com/android/car/media/MediaActivityController.java
+++ b/src/com/android/car/media/MediaActivityController.java
@@ -446,7 +446,8 @@
CarUiRecyclerView carUiRecyclerView =
controller.getContent().findViewById(R.id.browse_list);
if (carUiRecyclerView != null && carUiRecyclerView instanceof LazyLayoutView
- && !carUiRecyclerView.hasFocus() && !carUiRecyclerView.isInTouchMode()) {
+ && !carUiRecyclerView.getView().hasFocus()
+ && !carUiRecyclerView.getView().isInTouchMode()) {
LazyLayoutView lazyLayoutView = (LazyLayoutView) carUiRecyclerView;
com.android.car.ui.utils.ViewUtils.initFocus(lazyLayoutView);
}
@@ -456,18 +457,18 @@
@Nullable ViewAnimEndListener listener) {
CarUiRecyclerView carUiRecyclerView = content.findViewById(R.id.browse_list);
if (carUiRecyclerView != null && carUiRecyclerView instanceof LazyLayoutView
- && !carUiRecyclerView.isInTouchMode()) {
+ && !carUiRecyclerView.getView().isInTouchMode()) {
// If a CarUiRecyclerView is about to hide and it has focus, park the focus on the
// FocusParkingView before hiding the CarUiRecyclerView. Otherwise hiding the focused
// view will cause the Android framework to move focus to another view, causing visual
// jank.
- if (!show && carUiRecyclerView.hasFocus()) {
+ if (!show && carUiRecyclerView.getView().hasFocus()) {
mFpv.performAccessibilityAction(ACTION_FOCUS, null);
}
// If a new CarUiRecyclerView is about to show and there is no view focused or the
// FocusParkingView is focused, restore focus in the new CarUiRecyclerView.
if (show) {
- View focusedView = carUiRecyclerView.getRootView().findFocus();
+ View focusedView = carUiRecyclerView.getView().getRootView().findFocus();
if (focusedView == null || focusedView instanceof FocusParkingView) {
LazyLayoutView lazyLayoutView = (LazyLayoutView) carUiRecyclerView;
com.android.car.ui.utils.ViewUtils.initFocus(lazyLayoutView);
diff --git a/src/com/android/car/media/PlaybackFragment.java b/src/com/android/car/media/PlaybackFragment.java
index fb157e6..2d12807 100644
--- a/src/com/android/car/media/PlaybackFragment.java
+++ b/src/com/android/car/media/PlaybackFragment.java
@@ -55,6 +55,7 @@
import com.android.car.media.common.source.MediaSourceViewModel;
import com.android.car.media.widgets.AppBarController;
import com.android.car.ui.core.CarUi;
+import com.android.car.ui.recyclerview.CarUiRecyclerView;
import com.android.car.ui.recyclerview.ContentLimiting;
import com.android.car.ui.recyclerview.ScrollingLimitedViewHolder;
import com.android.car.ui.toolbar.MenuItem;
@@ -86,7 +87,7 @@
private View mControlBarScrim;
private PlaybackControlsActionBar mPlaybackControls;
private QueueItemsAdapter mQueueAdapter;
- private RecyclerView mQueue;
+ private CarUiRecyclerView mQueue;
private ViewGroup mSeekBarContainer;
private SeekBar mSeekBar;
private List<View> mViewsToHideForCustomActions;
diff --git a/src/com/android/car/media/browse/LimitedBrowseAdapter.java b/src/com/android/car/media/browse/LimitedBrowseAdapter.java
index 6d3c6a7..ee0a7f7 100644
--- a/src/com/android/car/media/browse/LimitedBrowseAdapter.java
+++ b/src/com/android/car/media/browse/LimitedBrowseAdapter.java
@@ -22,6 +22,8 @@
import com.android.car.media.R;
import com.android.car.media.common.MediaItemMetadata;
+import com.android.car.ui.recyclerview.CarUiGridLayoutStyle;
+import com.android.car.ui.recyclerview.CarUiRecyclerView;
import com.android.car.ui.recyclerview.DelegatingContentLimitingAdapter;
import java.util.List;
@@ -31,21 +33,23 @@
*/
public class LimitedBrowseAdapter extends DelegatingContentLimitingAdapter<BrowseViewHolder> {
+ private final CarUiRecyclerView mRecyclerView;
private final BrowseAdapter mBrowseAdapter;
- private final GridLayoutManager mLayoutManager;
private final int mMaxSpanSize;
@Nullable private String mAnchorId;
- public LimitedBrowseAdapter(BrowseAdapter browseAdapter, GridLayoutManager manager,
+ public LimitedBrowseAdapter(CarUiRecyclerView recyclerView, BrowseAdapter browseAdapter,
BrowseAdapter.Observer browseAdapterObserver) {
super(browseAdapter, R.id.browse_list_uxr_config);
+ mRecyclerView = recyclerView;
mBrowseAdapter = browseAdapter;
- mLayoutManager = manager;
- mMaxSpanSize = manager.getSpanCount();
- mLayoutManager.setSpanSizeLookup(mSpanSizeLookup);
+ CarUiGridLayoutStyle layoutStyle = (CarUiGridLayoutStyle) mRecyclerView.getLayoutStyle();
+ mMaxSpanSize = layoutStyle.getSpanCount();
+ layoutStyle.setSpanSizeLookup(mSpanSizeLookup);
+ mRecyclerView.setLayoutStyle(layoutStyle);
mBrowseAdapter.registerObserver(browseAdapterObserver);
mBrowseAdapter.setOnListChangedListener(((previousList, currentList) -> {
updateUnderlyingDataChanged(currentList.size(), validateAnchor());
@@ -119,17 +123,17 @@
}
private int getFirstVisibleItemPosition() {
- int firstItem = mLayoutManager.findFirstCompletelyVisibleItemPosition();
+ int firstItem = mRecyclerView.findFirstCompletelyVisibleItemPosition();
if (firstItem == RecyclerView.NO_POSITION) {
- firstItem = mLayoutManager.findFirstVisibleItemPosition();
+ firstItem = mRecyclerView.findFirstVisibleItemPosition();
}
return firstItem;
}
private int getLastVisibleItemPosition() {
- int lastItem = mLayoutManager.findLastCompletelyVisibleItemPosition();
+ int lastItem = mRecyclerView.findLastCompletelyVisibleItemPosition();
if (lastItem == RecyclerView.NO_POSITION) {
- lastItem = mLayoutManager.findLastVisibleItemPosition();
+ lastItem = mRecyclerView.findLastVisibleItemPosition();
}
return lastItem;
}