Adjust lookup table mechanism to support new UI of conditional card

Use layout resource id as the return value of getItemViewType
in the ContextualCardsAdapter to make sure the RecyclerView could
work normally, and adjust the lookup table mechanism to meet the
current design as well.

Bug: 113451905, 112578070
Test: visual, robotest
Change-Id: I8fa299e44025a0b71b6990d020e7f0683c153337
This commit is contained in:
Mill Chen
2018-11-02 16:27:23 +08:00
committed by Fan Zhang
parent 92792ee806
commit d20641059f
10 changed files with 339 additions and 38 deletions

View File

@@ -61,26 +61,26 @@ public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.Vi
@Override
public int getItemViewType(int position) {
return mContextualCards.get(position).getCardType();
final ContextualCard card = mContextualCards.get(position);
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByCardType(
mContext, mLifecycleOwner, card.getCardType());
return renderer.getViewType(card.isHalfWidth());
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int cardType) {
final ContextualCardRenderer renderer = mControllerRendererPool.getRenderer(mContext,
mLifecycleOwner, cardType);
final int viewType = renderer.getViewType();
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, 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);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
final int cardType = mContextualCards.get(position).getCardType();
final ContextualCardRenderer renderer = mControllerRendererPool.getRenderer(mContext,
mLifecycleOwner, cardType);
renderer.bindView(holder, mContextualCards.get(position));
final ContextualCard card = mContextualCards.get(position);
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByCardType(
mContext, mLifecycleOwner, card.getCardType());
renderer.bindView(holder, card);
}
@Override