Remove mIsHalfWidth field from ContextualCard
mIsHalfWidth in ContextualCard is too generic to identify its responsibility, it is used to hold the value of is_support_half from database and used to decide the card width. Also, it limits the relationship of CardType-to-Renderer not to be extended to one-to-many. To deal with this, we replaced mIsHalfWidth with mViewType to implement one-to-many relationship of CardType-to-Renderer, and removed all related logic of mIsHalfWidth. Bug: 121303357 Test: robotests, visual Change-Id: I03e14392272194424f317d11bf9d0d794a6133f4
This commit is contained in:
@@ -21,11 +21,15 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.recyclerview.widget.DiffUtil;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -62,24 +66,22 @@ public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
final ContextualCard card = mContextualCards.get(position);
|
||||
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByCardType(
|
||||
mContext, mLifecycleOwner, card.getCardType());
|
||||
return renderer.getViewType(card.isHalfWidth());
|
||||
return card.getViewType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, @LayoutRes int viewType) {
|
||||
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByViewType(
|
||||
mContext, mLifecycleOwner, viewType);
|
||||
final View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
|
||||
return renderer.createViewHolder(view);
|
||||
return renderer.createViewHolder(view, viewType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
||||
final ContextualCard card = mContextualCards.get(position);
|
||||
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByCardType(
|
||||
mContext, mLifecycleOwner, card.getCardType());
|
||||
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByViewType(
|
||||
mContext, mLifecycleOwner, card.getViewType());
|
||||
renderer.bindView(holder, card);
|
||||
}
|
||||
|
||||
@@ -98,11 +100,14 @@ public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
||||
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
||||
@Override
|
||||
public int getSpanSize(int position) {
|
||||
final ContextualCard card = mContextualCards.get(position);
|
||||
if (card.isHalfWidth()) {
|
||||
return HALF_WIDTH;
|
||||
final int viewType = mContextualCards.get(position).getViewType();
|
||||
switch (viewType) {
|
||||
case ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH:
|
||||
case SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH:
|
||||
return HALF_WIDTH;
|
||||
default:
|
||||
return FULL_WIDTH;
|
||||
}
|
||||
return FULL_WIDTH;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user