Merge "Switch to GridLayoutManager to support two-column layout"
diff --git a/src/com/android/settings/homepage/HomepageAdapter.java b/src/com/android/settings/homepage/HomepageAdapter.java
index 9ff5260..bd37601 100644
--- a/src/com/android/settings/homepage/HomepageAdapter.java
+++ b/src/com/android/settings/homepage/HomepageAdapter.java
@@ -21,6 +21,7 @@
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
@@ -28,14 +29,16 @@
public class HomepageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements
HomepageCardUpdateListener {
+ static final int SPAN_COUNT = 2;
private static final String TAG = "HomepageAdapter";
+ private static final int HALF_WIDTH = 1;
+ private static final int FULL_WIDTH = 2;
private final Context mContext;
private final ControllerRendererPool mControllerRendererPool;
private List<HomepageCard> mHomepageCards;
- private RecyclerView mRecyclerView;
public HomepageAdapter(Context context, HomepageManager manager) {
mContext = context;
@@ -81,7 +84,21 @@
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
- mRecyclerView = recyclerView;
+ final RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
+ if (layoutManager instanceof GridLayoutManager) {
+ final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
+ gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
+ @Override
+ public int getSpanSize(int position) {
+ final HomepageCard card = mHomepageCards.get(position);
+ //TODO(b/114009676): may use another field to make decision. still under review.
+ if (card.isHalfWidth()) {
+ return HALF_WIDTH;
+ }
+ return FULL_WIDTH;
+ }
+ });
+ }
}
@Override
diff --git a/src/com/android/settings/homepage/PersonalSettingsFragment.java b/src/com/android/settings/homepage/PersonalSettingsFragment.java
index 0637f7f..b515e29 100644
--- a/src/com/android/settings/homepage/PersonalSettingsFragment.java
+++ b/src/com/android/settings/homepage/PersonalSettingsFragment.java
@@ -16,11 +16,14 @@
package com.android.settings.homepage;
+import static com.android.settings.homepage.HomepageAdapter.SPAN_COUNT;
+
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -35,7 +38,7 @@
private RecyclerView mCardsContainer;
//TODO(b/113966426): rename
private HomepageAdapter mHomepageAdapter;
- private LinearLayoutManager mLayoutManager;
+ private GridLayoutManager mLayoutManager;
//TODO(b/113966426): rename
private HomepageManager mHomepageManager;
@@ -52,8 +55,8 @@
final View rootView = inflater.inflate(R.layout.settings_homepage,
container, false);
mCardsContainer = (RecyclerView) rootView.findViewById(R.id.card_container);
- //TODO(b/111822407): May have to swap to GridLayoutManager
- mLayoutManager = new LinearLayoutManager(getActivity());
+ mLayoutManager = new GridLayoutManager(getActivity(), SPAN_COUNT,
+ LinearLayoutManager.VERTICAL, false /* reverseLayout */);
mCardsContainer.setLayoutManager(mLayoutManager);
mHomepageAdapter = new HomepageAdapter(getContext(), mHomepageManager);
mCardsContainer.setAdapter(mHomepageAdapter);